Hi all,

I got this problem sorted out. It had (of course) nothing to do with Solaris but with wrong file permissions. Here is the long story:

************************************************************************ ***************************************************
Note, I am installing as root for Etoile to be used by all users:

        cd /usr/src
        ls -l
        total 104704
        -rw-r--r--   1 root     root     53565440 Aug  3 09:01 etoile-0.2.tar

I didn' t see in the first place that these file permissions are rather uncommon (never seen this before in any sources tar archive I downloaded).

        tar xvf etoile-0.2.tar
        ls -l
        total 104706
        drwx--x--x   8 502      502          512 Jul 28 21:43 Etoile-0.2
        -rw-r--r--   1 root     root     53565440 Aug  3 09:01 etoile-0.2.tar

        ls -l Etoile-0.2/
        -rw-------   1 502      502         2672 Jul 28 21:38 ANNOUNCE
        drwx--x--x   3 502      502          512 Jul 28 19:18 Build
        drwx--x--x   8 502      502          512 Jul 28 19:19 Bundles
        -rw-------   1 502      502        16902 Jul 28 19:19 ChangeLog
        drwx--x--x  19 502      502          512 Jul 28 19:18 Frameworks
        -rw-------   1 502      502         1406 Jul 28 19:19 GNUmakefile
        -rw-------   1 502      502         5800 Jul 28 19:19 INSTALL
        -rw-------   1 502      502         1527 Jul 28 19:19 INSTALL.Ubuntu
        drwx--x--x   4 502      502          512 Jul 28 19:19 Languages
        -rw-------   1 502      502         2179 Jul 28 19:19 README
        drwx--x--x   5 502      502          512 Jul 28 19:19 Services
        -rw-------   1 502      502         9167 Jul 28 19:19 etoile.make
        -rwx------   1 502      502         6138 Jul 28 19:19 setdown.sh
        -rwx------   1 502      502         9819 Jul 28 19:19 setup.sh

Someone has a rather uncommon umask here. :-) This made some of the files/resources of the installed stuff unreadable by a normal user.

NSApplication.m:

- (void) _init
{
  ...
  initialize_gnustep_backend();

  /* Load user-defined bundles */
  gsapp_user_bundles();

  /* Connect to our window server.  */
  srv = [GSDisplayServer serverWithAttributes: nil];
  RETAIN(srv);
  [GSDisplayServer setCurrentServer: srv];
  ...
}

[GSDisplayServer setCurrentServer: srv] was never called since gsapp_user_bundles() raised an exception.

gsapp_user_bundles(void)
{
   NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
   NSArray *array = [defs arrayForKey:@"GSAppKitUserBundles"];
   int i, c = [array count];
   if (array == nil || c == 0) return;
   NSLog(@"Loading %d user defined AppKit bundles", c);
   for (i = 0; i < c; i++)
     {
      NSString *path = [array objectAtIndex:i];
      NSLog(@"Trying %@ ...", path);
      NS_DURING
         NSBundle *bundle = [NSBundle bundleWithPath:path];
         if (bundle)
           {
            NSLog(@"Loading...");
[[[bundle principalClass] alloc] init]; // <----- Camaelon raised an exception when accessing resources (unreadable by normal user)
            NSLog(@"Loaded '%@'\n", path);
            NSLog(@" ");
           }
         else NSLog(@"* Unable to load '%@'", path);
      NS_HANDLER
         NSLog(@"Warning (gsapp): %@", [localException reason]);
      NS_ENDHANDLER
     }
}

Some method in the process of loading the bundles

("/opt/GNUstep/System/Library/Bundles/Camaelon.themeEngine","/opt/ GNUstep/System/Library/Bundles/EtoileMenus.bundle","/opt/GNUstep/ System/Library/Bundles/EtoileBehavior.bundle")

called [NSScreen screens] which raised another exception since GSCurrentServer() could not be set.

NSScreen.m
+ (NSArray *)screens
{
   ...
   srv = GSCurrentServer();
   screens = [srv screenList];
   count = [screens count];
   if (count == 0)
     {
      // something is wrong. This shouldn't happen.
[NSException raise: NSWindowServerCommunicationException format: @"Unable to retrieve list of screens from window server."];
      return nil;
     }
   ...
}

and Etoile fun was over.
************************************************************************ ***************************************************
My hints for installing Etoile on Solaris:

• Forget setup.sh and set things up manually (see below)
• Check file permissions; do chmod -R a+r to the Etoile source tree after deflating Etoile-0.2.tar • You need a bunch of fixes to the source tree to get Etoile-0.2 compiled under Solaris (too many for this mail). If anyone is interested drop me a note. • Etoile can't be installed with make, make install on a fresh system due to many self-reflexive dependencies. Here is my list of commands that more or less successfully gets stuff installed.

        cd /usr/src/Etoile-0.2

        cd ./Frameworks/OgreKit
        make
        make install

Temporär auskommentieren
        pico ./Source/GNUmakefile
#         FindPanel \
        make
        make install
        cd ..
        cd ..

        cd ./Frameworks/PaneKit
        make
        make install
        cd ..
        cd ..

        cd ./Frameworks/IconKit
        make
        make install
        cd ..
        cd ..

        cd ./Frameworks/InspectorKit
        make
        make install
        cd ..
        cd ..

        cd ./Services/User
        make
        make install
        cd ..
        cd ..

Temporär auskommentieren

        pico  GNUmakefile
        #InspectorKit_SUBPROJECTS += Source
        make
        make install
        cd ..
        cd ..

pico /usr/src/Etoile-0.2/Frameworks/AddressesKit/Frameworks/GNUmakefile
        #  Addresses \


        cd ./Frameworks
        make OBJCFLAGS="-Dtypeof=__typeof__"
        make install
        cd ..

        make OBJCFLAGS="-Dtypeof=__typeof__"
        make install

After installing Etoile-0.2 you probably want to install Yen-Ju's latest fix to Azalea (broken arrow for edited documents). Thanks a lot to Yen-Ju for this fix.

        cd /usr/src
svn co http://svn.gna.org/svn/etoile/trunk/Etoile/Services/Private/Azalea
        cd Azalea
        rm -rf /opt/GNUstep/System/Applications/Azalea.app
        rm -rf /opt/GNUstep/Local/Applications/Azalea.app
        make OBJCFLAGS="-Dtypeof=__typeof__"
        make install
        cd ..

As mentioned above I don't recommend to use setup. It at least did nothing good to me and I was better off using the following list of commands to set things up manually.

Settings defaults
We need to set some user defaults (for each user).

defaults write NSGlobalDomain GSAppKitUserBundles '("/opt/GNUstep/System/Library/Bundles/Camaelon.themeEngine","/opt/ GNUstep/System/Library/Bundles/EtoileMenus.bundle","/opt/GNUstep/ System/Library/Bundles/EtoileBehavior.bundle")'
        defaults write NSGlobalDomain NSUseRunningCopy YES
        defaults write Camaelon Theme "Nesedah"
        defaults write GWorkspace NoWarnOnQuit YES
        defaults write NSGlobalDomain GSWorkspaceApplication "Finder.app"
        defaults write NSGlobalDomain XWindowBufferUseXShm NO

Etoile startup script
We probably could use /opt/GNUstep/System/Tools/etoile_system directly. But it can't hurt to have a wrapper script that sources GNUstep.sh first.

        pico  /usr/local/bin/etoile

        #!/bin/sh
        . /opt/GNUstep/System/Library/Makefiles/GNUstep.sh
        etoile_system

        chmod a+x /usr/local/bin/etoile

Session management
Under Linux we setup a file /usr/share/xsessions/etoile.desktop with the contents

[Desktop Entry]
Encoding=UTF-8
Name=Étoilé
Comment=Use this session to log in Étoilé environment
Comment[fr]=Utilisez cette session pour vous logguez dans
l'environnement Étoilé
Exec=/usr/local/bin/etoile
# No icon for now
Icon=
Type=Application

This file has no meaning under Solaris. We setup corresponding dlogin files instead. To make Etoile/Azalea selectable in dtlogin create the following files by duplicating the jds templates and modifying them accordingly (--> file permissions).

cp -Ppr /usr/dt/config/C/Xresources.d/Xresources.jds /usr/dt/config/C/Xresources.d/Xresources.aza
        cp -Ppr /usr/dt/config/Xsession2.jds /usr/dt/config/Xsession.aza
        cp -Ppr /usr/dt/config/Xinitrc.jds /usr/dt/config/Xinitrc.aza

        ls /opt/GNUstep/System/Applications/Azalea.app/Azalea
        ls /opt/GNUstep/System/Tools/etoile_system
        ls /usr/local/bin/etoile

pico /usr/dt/config/C/Xresources.d/Xresources.aza
Dtlogin*altDtsIncrement:        True

Dtlogin*altDtName:    Etoile Desktop
Dtlogin*altDtKey:       /usr/local/bin/etoile
Dtlogin*altDtStart:     /usr/dt/config/Xsession.aza
Dtlogin*altDtLogo:      JDS_s10

pico /usr/dt/config/Xsession.aza
#!/bin/ksh
#####################################################################
###  File:              Xsession2.jds  Version 0.21 $Revision: 1.4 $
###
###  Default Location:  /usr/dt/config/Xsession2.jds
###
###  Purpose:           GNOME Desktop start script
###
###  Invoked by:        /usr/dt/bin/Xsession
###
#####################################################################

# First a little namespace cleanup of vars associated with this
# (and /usr/dt/bin/Xsession.ow) scripts.

unset SDT_ALT_SESSION
unset SDT_ALT_HELLO
unset SDT_NO_DSDM

XINITRC="/usr/dt/config/Xinitrc.aza"

if [ -x /usr/dt/bin/xmbind ]; then
    /usr/dt/bin/xmbind
fi

echo 'GNOME Desktop Environment'

if [ -f $XINITRC ]; then
    echo "using xinitrc file: $XINITRC"
    /bin/ksh $XINITRC
else
    echo "xinitrc file: $XINITRC not found"
fi


pico /usr/dt/config/Xinitrc.aza
#!/bin/ksh
#####################################################################
###  File:              Xinitrc.jds  Version 0.23 $Revision: 1.19 $
###
###  Default Location:  /usr/dt/config/Xinitrc.jds
###
###  Purpose:           X session startup script
###
###  Invoked by:        /usr/dt/bin/Xsession
###
#####################################################################

if [ "x$LC_ALL" = x -a "x$LANG" = x -o "x$LANG" = xC ]; then
  export LC_ALL="C"
  export LC_CTYPE="C"
else
  export LC_MESSAGES=$LANG
fi

export [EMAIL PROTECTED],UTF-8
export G_BROKEN_FILENAMES=yes

/usr/openwin/bin/xrdb -merge << EOF
! Default CDE resources
*WindowColor:           #8A008A008A00
!*WindowForeground:      #FF0000000000
!*DataBackground:        #0000FF000000
*DataForeground:        #FF0000000000
*WorkspaceColor:        #8A008A008A00
*Color.Background:      #FF000000FF00
!*Color.Foreground:      #0000FF000000
*foreground:            #000000000000
! Hack for Dtmail
*XmText*background: seashell
*XmTextField*background: seashell
*Message_List*background: seashell
*background:    #AE00B200C300
Dthello*string:         Welcome to the GNOME Desktop Environment
EOF

if [ -f $HOME/.Xdefaults ]; then
xrdb -merge $HOME/.Xdefaults # Load Users X11 resource database
fi

echo "Starting GNOME"
#/opt/GNUstep/System/Tools/make_services
#openapp AZBackground.app &
#openapp EtoileMenuServer &
#openapp AZDock.app &
#openapp Finder.app &
#exec /opt/GNUstep/System/Applications/Azalea.app/Azalea
exec /usr/local/bin/etoile


SystemTaskList.plist
The file SystemTaskList.plist contains a dictionary with entries of applications/tools (gpbs, gdnc, Azalea, EtoileMenuServer,...) that are to be started when a user logs in. This file is read by the etoile_system tool.

        mkdir /opt/GNUstep/System/Library/Etoile
        cd /usr/src/Etoile-0.2
cp ./Services/Private/System/SystemTaskList.plist /opt/GNUstep/System/Library/Etoile
        chmod a+r /opt/GNUstep/System/Library/Etoile/SystemTaskList.plist
        pico /opt/GNUstep/System/Library/Etoile/SystemTaskList.plist

The Etoile system defines some keys (/etoilesystem/application/azalea, /etoilesystem/tool/gpbs, /etoilesystem/application/menuserver,...) that are associated with concrete value sin this dic, e.g.

        /etoilesystem/application/menuserver    ->   EtoileMenuServer
        /etoilesystem/application/dock                  ->   AZDock
        /etoilesystem/application/dock                  ->   AZDock
        /etoilesystem/application/background    ->   AZBackground
        /etoilesystem/application/outerspace            ->   Finder
        /etoilesystem/tool/make_services                ->   make_services

We probably should have this file in /home/<user>/Library/Etoile as well.

        cd
        mkdir ./Library/Etoile
cp /opt/GNUstep/System/Library/Etoile/SystemTaskList.plist ./Library/Etoile
/opt/GNUstep/System/Library/Etoile/SystemTaskList.plist

        pico ./Library/Etoile/SystemTaskList.plist

Installing fonts and themes
The Etoile fonts can be installed as follows.

        mkdir /opt/GNUstep/System/Library/Fonts
        cd /usr/src
        wget http://download.gna.org/etoile/etoile-default-fonts.tar.gz
        gunzip etoile-default-fonts.tar.gz
        tar xvf etoile-default-fonts.tar
        cp -R etoile-default-fonts/* /opt/GNUstep/System/Library/Fonts
        rm -rf etoile-default-fonts

        mkdir /opt/GNUstep/System/Library/Themes
cp -r /opt/GNUstep/System/Library/Bundles/Camaelon.themeEngine/Resources/ Nesedah.theme /opt/GNUstep/System/Library/Themes


Hopefully this is of help to someone. Thanks to the Etoile team for this great software. Logout is not working for me yet (still have to do pkill etoile), but I suppose this is a minor issue and probably easy to fix. In one of the versions I had tried out I saw tool tips popping up on the screen (probably to tell me which application my mouse pointer is hovering over). Unfortunately they never disappeared again. In my current install they luckily do not popup. However, there is no way for me to determine which icon in AZDock refers to which application. The contextual menu has no title as it should according to Yen-Ju. :-( But this is a rather minor issue. I am a happy user of Etoile now (time to get rid of Window Maker) and strongly recommend everybody - that not yet dared - to check it out. :-)

Regards,

  Andreas










_______________________________________________
Etoile-discuss mailing list
[email protected]
https://mail.gna.org/listinfo/etoile-discuss

Répondre à