XQuartz: unsetenv(DISPLAY) if we're not org.x.X11
Also some prefix related fixes.
(cherry picked from commit fd459e9658
)
This commit is contained in:
parent
6ad71d6bea
commit
639b9cd2bd
|
@ -66,6 +66,7 @@ AC_PROG_LEX
|
||||||
AC_PROG_YACC
|
AC_PROG_YACC
|
||||||
AC_SYS_LARGEFILE
|
AC_SYS_LARGEFILE
|
||||||
XORG_PROG_RAWCPP
|
XORG_PROG_RAWCPP
|
||||||
|
AC_PATH_PROG(SED,sed)
|
||||||
|
|
||||||
dnl Check for dtrace program (needed to build Xserver dtrace probes)
|
dnl Check for dtrace program (needed to build Xserver dtrace probes)
|
||||||
dnl Also checks for <sys/sdt.h>, since some Linux distros have an
|
dnl Also checks for <sys/sdt.h>, since some Linux distros have an
|
||||||
|
@ -491,6 +492,14 @@ AC_ARG_WITH(apple-applications-dir,AS_HELP_STRING([--with-apple-applications-dir
|
||||||
[ APPLE_APPLICATIONS_DIR="${withval}" ],
|
[ APPLE_APPLICATIONS_DIR="${withval}" ],
|
||||||
[ APPLE_APPLICATIONS_DIR="/Applications/Utilities" ])
|
[ APPLE_APPLICATIONS_DIR="/Applications/Utilities" ])
|
||||||
AC_SUBST([APPLE_APPLICATIONS_DIR])
|
AC_SUBST([APPLE_APPLICATIONS_DIR])
|
||||||
|
AC_ARG_WITH(apple-application-name,AS_HELP_STRING([--with-apple-application-name=NAME], [Name for the .app (default: X11)]),
|
||||||
|
[ APPLE_APPLICATION_NAME="${withval}" ],
|
||||||
|
[ APPLE_APPLICATION_NAME="X11" ])
|
||||||
|
AC_SUBST([APPLE_APPLICATION_NAME])
|
||||||
|
AC_ARG_WITH(apple-application-id,AS_HELP_STRING([--with-apple-application-id=VALUE], [CFBundleIdentification for the .app (default: org.x.X11)]),
|
||||||
|
[ APPLE_APPLICATION_ID="${withval}" ],
|
||||||
|
[ APPLE_APPLICATION_ID="org.x.X11" ])
|
||||||
|
AC_SUBST([APPLE_APPLICATION_ID])
|
||||||
AC_ARG_ENABLE(builddocs, AS_HELP_STRING([--enable-builddocs], [Build docs (default: disabled)]),
|
AC_ARG_ENABLE(builddocs, AS_HELP_STRING([--enable-builddocs], [Build docs (default: disabled)]),
|
||||||
[BUILDDOCS=$enableval],
|
[BUILDDOCS=$enableval],
|
||||||
[BUILDDOCS=no])
|
[BUILDDOCS=no])
|
||||||
|
|
|
@ -7,7 +7,8 @@ AM_CPPFLAGS = \
|
||||||
-DINXQUARTZ \
|
-DINXQUARTZ \
|
||||||
-DUSE_NEW_CLUT \
|
-DUSE_NEW_CLUT \
|
||||||
-DXFree86Server \
|
-DXFree86Server \
|
||||||
-I$(top_srcdir)/miext/rootless
|
-I$(top_srcdir)/miext/rootless \
|
||||||
|
-DX11LIBDIR=\"$(libdir)\"
|
||||||
|
|
||||||
if GLX
|
if GLX
|
||||||
GL_DIR = GL
|
GL_DIR = GL
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
// pbproxy/pbproxy.h
|
// pbproxy/pbproxy.h
|
||||||
extern BOOL xpbproxy_init (void);
|
extern BOOL xpbproxy_init (void);
|
||||||
|
|
||||||
#define DEFAULTS_FILE "/usr/X11/lib/X11/xserver/Xquartz.plist"
|
#define DEFAULTS_FILE X11LIBDIR"/X11/xserver/Xquartz.plist"
|
||||||
|
|
||||||
#ifndef XSERVER_VERSION
|
#ifndef XSERVER_VERSION
|
||||||
#define XSERVER_VERSION "?"
|
#define XSERVER_VERSION "?"
|
||||||
|
|
|
@ -7,15 +7,15 @@
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>X11</string>
|
<string>X11</string>
|
||||||
<key>CFBundleGetInfoString</key>
|
<key>CFBundleGetInfoString</key>
|
||||||
<string>X11</string>
|
<string>APPLE_APPLICATION_NAME</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>X11.icns</string>
|
<string>X11.icns</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>org.x.X11</string>
|
<string>APPLE_APPLICATION_ID</string>
|
||||||
<key>CFBundleInfoDictionaryVersion</key>
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
<string>6.0</string>
|
<string>6.0</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>X11</string>
|
<string>APPLE_APPLICATION_NAME</string>
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
|
@ -1,12 +1,23 @@
|
||||||
|
include cpprules.in
|
||||||
|
|
||||||
|
CPP_FILES_FLAGS = \
|
||||||
|
-DAPPLE_APPLICATION_ID="$(APPLE_APPLICATION_ID)" \
|
||||||
|
-DAPPLE_APPLICATION_NAME="$(APPLE_APPLICATION_NAME)"
|
||||||
|
|
||||||
install-data-hook:
|
install-data-hook:
|
||||||
./mk_bundke.sh $(DESTDIR)$(APPLE_APPLICATIONS_DIR)/X11.app
|
./mk_bundke.sh $(DESTDIR)$(APPLE_APPLICATIONS_DIR)/$(APPLE_APPLICATION_NAME).app
|
||||||
|
|
||||||
|
noinst_PRE = Info.plist.cpp
|
||||||
|
noinst_DATA = $(noinst_PRE:plist.cpp=plist)
|
||||||
|
|
||||||
|
CLEANFILES = $(noinst_DATA)
|
||||||
|
|
||||||
resourcedir=$(libdir)/X11/xserver
|
resourcedir=$(libdir)/X11/xserver
|
||||||
resource_DATA = Xquartz.plist
|
resource_DATA = Xquartz.plist
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
mk_bundke.sh \
|
mk_bundke.sh \
|
||||||
Info.plist \
|
Info.plist.cpp \
|
||||||
PkgInfo \
|
PkgInfo \
|
||||||
$(resource_DATA) \
|
$(resource_DATA) \
|
||||||
Resources/da.lproj/InfoPlist.strings \
|
Resources/da.lproj/InfoPlist.strings \
|
||||||
|
|
37
hw/xquartz/bundle/cpprules.in
Normal file
37
hw/xquartz/bundle/cpprules.in
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
# Translate XCOMM into pound sign with sed, rather than passing -DXCOMM=XCOMM
|
||||||
|
# to cpp, because that trick does not work on all ANSI C preprocessors.
|
||||||
|
# Delete line numbers from the cpp output (-P is not portable, I guess).
|
||||||
|
# Allow XCOMM to be preceded by whitespace and provide a means of generating
|
||||||
|
# output lines with trailing backslashes.
|
||||||
|
# Allow XHASH to always be substituted, even in cases where XCOMM isn't.
|
||||||
|
|
||||||
|
CPP_SED_MAGIC = $(SED) -e '/^\# *[0-9][0-9]* *.*$$/d' \
|
||||||
|
-e '/^\#line *[0-9][0-9]* *.*$$/d' \
|
||||||
|
-e '/^[ ]*XCOMM$$/s/XCOMM/\#/' \
|
||||||
|
-e '/^[ ]*XCOMM[^a-zA-Z0-9_]/s/XCOMM/\#/' \
|
||||||
|
-e '/^[ ]*XHASH/s/XHASH/\#/' \
|
||||||
|
-e '/XSLASHGLOB/s/XSLASHGLOB/\/\*/' \
|
||||||
|
-e '/\@\@$$/s/\@\@$$/\\/'
|
||||||
|
|
||||||
|
# Strings to replace in man pages
|
||||||
|
XORGRELSTRING = @PACKAGE_STRING@
|
||||||
|
XORGMANNAME = X Version 11
|
||||||
|
|
||||||
|
MANDEFS = \
|
||||||
|
-D__xorgversion__="\"$(XORGRELSTRING)\" \"$(XORGMANNAME)\"" \
|
||||||
|
-D__appmansuffix__=$(APP_MAN_SUFFIX) \
|
||||||
|
-D__filemansuffix__=$(FILE_MAN_SUFFIX) \
|
||||||
|
-D__libmansuffix__=$(LIB_MAN_SUFFIX) \
|
||||||
|
-D__miscmansuffix__=$(MISC_MAN_SUFFIX) \
|
||||||
|
-D__XSERVERNAME__=Xorg -D__XCONFIGFILE__=xorg.conf \
|
||||||
|
-D__xinitdir__=$(XINITDIR) \
|
||||||
|
-D__bindir__=$(bindir) \
|
||||||
|
-DSHELL_CMD=$(SHELL_CMD) $(ARCHMANDEFS)
|
||||||
|
|
||||||
|
SUFFIXES = .$(APP_MAN_SUFFIX) .man .cpp
|
||||||
|
|
||||||
|
.cpp:
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $< | $(CPP_SED_MAGIC) > $@
|
||||||
|
|
||||||
|
.man.$(APP_MAN_SUFFIX):
|
||||||
|
$(RAWCPP) $(RAWCPPFLAGS) $(MANDEFS) $(EXTRAMANDEFS) < $< | $(CPP_SED_MAGIC) > $@
|
|
@ -59,8 +59,8 @@ extern int noPanoramiXExtension;
|
||||||
|
|
||||||
extern int xquartz_resetenv_display;
|
extern int xquartz_resetenv_display;
|
||||||
|
|
||||||
#define DEFAULT_CLIENT "/usr/X11/bin/xterm"
|
#define DEFAULT_CLIENT X11BINDIR "/xterm"
|
||||||
#define DEFAULT_STARTX "/usr/X11/bin/startx"
|
#define DEFAULT_STARTX X11BINDIR "/startx"
|
||||||
#define DEFAULT_SHELL "/bin/sh"
|
#define DEFAULT_SHELL "/bin/sh"
|
||||||
|
|
||||||
#ifndef BUILD_DATE
|
#ifndef BUILD_DATE
|
||||||
|
@ -420,19 +420,49 @@ int startup_trigger(int argc, char **argv, char **envp) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Setup the environment we want our child processes to inherit */
|
/** Setup the environment we want our child processes to inherit */
|
||||||
static void setup_env() {
|
static void ensure_path(const char *dir) {
|
||||||
char buf[1024], *temp;
|
char buf[1024], *temp;
|
||||||
|
|
||||||
/* Make sure /usr/X11/bin is in the $PATH */
|
/* Make sure /usr/X11/bin is in the $PATH */
|
||||||
temp = getenv("PATH");
|
temp = getenv("PATH");
|
||||||
if(temp == NULL || temp[0] == 0) {
|
if(temp == NULL || temp[0] == 0) {
|
||||||
snprintf(buf, sizeof(buf), "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:%s", X11BINDIR);
|
snprintf(buf, sizeof(buf), "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:%s", dir);
|
||||||
setenv("PATH", buf, TRUE);
|
setenv("PATH", buf, TRUE);
|
||||||
} else if(strnstr(temp, X11BINDIR, sizeof(temp)) == NULL) {
|
} else if(strnstr(temp, X11BINDIR, sizeof(temp)) == NULL) {
|
||||||
snprintf(buf, sizeof(buf), "%s:%s", temp, X11BINDIR);
|
snprintf(buf, sizeof(buf), "%s:%s", temp, dir);
|
||||||
setenv("PATH", buf, TRUE);
|
setenv("PATH", buf, TRUE);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void setup_env() {
|
||||||
|
char *temp;
|
||||||
|
const char *pds = NULL;
|
||||||
|
|
||||||
|
/* Pass on our prefs domain to startx and its inheritors (mainly for
|
||||||
|
* quartz-wm and the Xquartz stub's MachIPC)
|
||||||
|
*/
|
||||||
|
CFBundleRef bundle = CFBundleGetMainBundle();
|
||||||
|
if(bundle) {
|
||||||
|
CFStringRef pd = CFBundleGetIdentifier(bundle);
|
||||||
|
if(pd) {
|
||||||
|
pds = CFStringGetCStringPtr(pd, 0);
|
||||||
|
if(pds) {
|
||||||
|
server_bootstrap_name = malloc(sizeof(char) * (strlen(pds) + 1));
|
||||||
|
strcpy(server_bootstrap_name, pds);
|
||||||
|
setenv("X11_PREFS_DOMAIN", pds, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If we're not org.x.X11, we want to unset DISPLAY, so we don't
|
||||||
|
* use the launchd DISPLAY socket.
|
||||||
|
*/
|
||||||
|
if(pds == NULL || strcmp(pds, "org.x.X11") != 0)
|
||||||
|
unsetenv("DISPLAY");
|
||||||
|
|
||||||
|
/* Make sure PATH is right */
|
||||||
|
ensure_path(X11BINDIR);
|
||||||
|
|
||||||
/* cd $HOME */
|
/* cd $HOME */
|
||||||
temp = getenv("HOME");
|
temp = getenv("HOME");
|
||||||
if(temp != NULL && temp[0] != '\0')
|
if(temp != NULL && temp[0] != '\0')
|
||||||
|
@ -455,22 +485,6 @@ int main(int argc, char **argv, char **envp) {
|
||||||
|
|
||||||
/* Setup the initial crasherporter info */
|
/* Setup the initial crasherporter info */
|
||||||
strlcpy(__crashreporter_info__, __crashreporter_info__base, __crashreporter_info__len);
|
strlcpy(__crashreporter_info__, __crashreporter_info__base, __crashreporter_info__len);
|
||||||
|
|
||||||
/* Pass on our prefs domain to startx and its inheritors (mainly for
|
|
||||||
* quartz-wm and the Xquartz stub's MachIPC)
|
|
||||||
*/
|
|
||||||
CFBundleRef bundle = CFBundleGetMainBundle();
|
|
||||||
if(bundle) {
|
|
||||||
CFStringRef pd = CFBundleGetIdentifier(bundle);
|
|
||||||
if(pd) {
|
|
||||||
const char *pds = CFStringGetCStringPtr(pd, 0);
|
|
||||||
if(pds) {
|
|
||||||
server_bootstrap_name = malloc(sizeof(char) * (strlen(pds) + 1));
|
|
||||||
strcpy(server_bootstrap_name, pds);
|
|
||||||
setenv("X11_PREFS_DOMAIN", pds, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fprintf(stderr, "X11.app: main(): argc=%d\n", argc);
|
fprintf(stderr, "X11.app: main(): argc=%d\n", argc);
|
||||||
for(i=0; i < argc; i++) {
|
for(i=0; i < argc; i++) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user