GNUstep filesystem layout discussion

Michel Salim michel.sylvan at
Sat Aug 23 18:03:23 UTC 2008

GNUstep is a Obj-C-based framework, similar to Mac OS X's Cocoa

State of GNUstep in Fedora
GNUstep has long been excluded from Fedora due to its non-standard
filesystem layout. Recently, however, its support for being installed
under the FHS layout has improved. gnustep-make is now in Fedora.
There are some problems with the current layout used by Fedora; see

Other distributions
Debian and its derived distributions have the complete GNUstep stack
already packaged. The file system layout they adopted seem to be a
flattened FHS layout.

Current problems
OpenStep/GNUstep/Cocoa allow for application bundles: self-contained
directories that is treated by the application launcher (openapp in
GNUstep) as applications. In GNUstep terminology, a "flattened"
layout, such as used in Debian, makes the application bundles
platform-specific. In an unflattened layout, however, such as used by
default when using the GNUstep layout (as opposed to the FHS layout
that we are constrained to use in Fedora), fat binaries are possible:
binaries are stored under a directory specifying their platform.

for instance:
\--- i386
|       \--- hello
\--- x86_64
        \--- hello

This seems more desirable, in that it will allow an unmodified
'openapp' launcher to work on multilib systems: the default
application path is /usr/lib/GNUstep/Applications, regardless of
whether %{_libdir} is /usr/lib or /usr/lib64.

The problem, right now, is that GNUstep tools are currently installed
in /usr/bin/<arch>. Which conflicts with util-linux-ng, where
/usr/bin/<arch> is an executable wrapper around 'setarch <arch>'.

We would need to settle on our GNUstep layout, before the rest of
GNUstep can be packaged. The main options right now seem to be:
- FHS, flattened (like Debian). We would need to override GNUstep-make
to install under %{_libdir} rather than %{_prefix}/lib. It will
require a customized openapp to handle multilib systems

- FHS, unflattened (like our current gnustep-make). Works well with
multilib. We need to decide where to put GNUstep tools: Axel suggests
/usr/bin/GNUstep/<arch>. Base libraries currently go in
/usr/lib/<arch>, and are probably fine there. Moving them to
/usr/lib/GNUstep/<arch> might cause confusion as the higher-level
frameworks are installed there.

- Pure GNUstep layout. Everything goes in /usr/GNUstep

Thoughts? Once we come up with a consensus I'll probably start a page
on the Wiki. Anyone interested in joining a GNUstep SIG?


Michel Salim

More information about the fedora-devel-list mailing list