bug-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bug #20003] Two patches for packaging a relatively rpmlint clean gn


From: Gareth Armstrong
Subject: Re: [bug #20003] Two patches for packaging a relatively rpmlint clean gnustep-make rpm
Date: Tue, 11 Mar 2008 15:41:44 +0100
User-agent: Thunderbird 2.0.0.12 (X11/20080226)

Hello Nicola,

sorry for the late reply. Many thanks for taking on-board my suggestions. I have updated my rpm spec file (attached and dependent patches) for the stable gnustep-make 2.0.4 based on your suggestions and with an additional patch. The resulting rpm package when verified by rpmlint, spits this out on Fedora 8:

$ rpmlint /home/gareth/rpmbuild/RPMS/x86_64/gnustep-make-2.0.4-1.ocek.fc8.x86_64.rpm gnustep-make.x86_64: W: devel-file-in-non-devel-package /usr/bin/gnustep-config gnustep-make.x86_64: W: file-not-utf8 /usr/share/doc/gnustep-make-2.0.4/Documentation/User/GNUstep/README.Darwin gnustep-make.x86_64: W: file-not-utf8 /usr/share/doc/gnustep-make-2.0.4/ChangeLog.1
gnustep-make.x86_64: W: non-conffile-in-etc /etc/profile.d/gnustep.csh
gnustep-make.x86_64: W: non-conffile-in-etc /etc/profile.d/gnustep.sh
gnustep-make.x86_64: E: no-binary

So we are nearly there. To get where I am now I had to add a fhs-system-x86_64 file (gnustep-make-2.0.4-fhs-system-x86_64.patch)for x86_64 platforms. I would like to know your thoughts on this. But with this I can now compile x86_64 bit gnustep-base packages. Are my assumptions for the variables correct?

Adding this file however, flavorizes (e.g. i386.rpm, x86_64.rpm) the resulting gnustep-make rpm package because /etc/GNUstep/GNUstep.conf now contains a hard coded path for either /usr/lib/ on i386 or /usr/lib64 on x86_64 platforms. The rpm package should really be a noarch.rpm package as it doesn't contain any binaries. I don't have a quick and ready solution but maybe /etc/GNUstep/GNUstep.conf could be made a little dynamic depending on the underlying platform?

Looking forward to your feedback.

All the best,

Gareth


Nicola Pero wrote:
Update of bug #20003 (project gnustep):

             Open/Closed:                    Open => Closed

    _______________________________________________________

Follow-up Comment #1:

Thanks - excellent suggestions. :-)

I applied most of your changes/patches to trunk :-)

The main modification I made to your patches was not to install
GNUstep.sh and similar files as executables, but rather strip
out the initial shebang.  The file must be sourced - simply
executing it does nothing even if new users sometime try to do it
- so I'd rather have it installed as non-executable and without
any shebangs to make it really hard for users to do the wrong
thing and execute them instead of sourcing them ;-)

Anyway, great help, well done! :-)

Thanks


    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?20003>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/

--



%define url      http://www.gnustep.org/
%define version  2.0.4
%define release  1.ocek%{?dist}

#====================================================================#
#
#====================================================================#

Summary:  GNUstep Makefile package
Name:     gnustep-make
Version:  %version
Release:  %release

Group:    Development/Libraries
License:  GPLv3
URL:      %url
Source0:  ftp://ftp.gnustep.org/pub/gnustep/core/%{name}-%{version}.tar.gz
#Patch0:   gnustep-make-2.0.0-gnumakefile.in.patch
Patch0:   gnustep-make-20080310svn-gnumakefile.in.patch
Patch1:   gnustep-make-2.0.4-fhs-system.patch

Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
### Should be noarch but GNUstep.conf file is arch dependent,
###  e.g. x86_64 => /usr/lib64
#Buildarch: noarch
BuildRequires: texinfo, /usr/bin/texi2html
### Doesn't currently work as gnustep-make info files don't have
### the correct info tags
#Requires(post): /sbin/install-info
#Requires(preun): /sbin/install-info


%description
The gnustep-makefile package is a simple, powerful and extensible way
to write makefiles for a GNUstep-based project.  It allows the user to
write a project without having to deal with the complex issues
associated with configuration, building, installation, and packaging.
It also allows the user to easily create cross-compiled binaries.


%prep
%setup -qn %{name}-%{version}
%patch0 -p1 -b .gnumakefile
%patch1 -p1 -b .fhs-system

files="filesystem.csh.in filesystem.sh.in GNUstep.csh.in GNUstep.sh.in 
GNUstep-reset.sh"
for file in $files; do
%{__perl} -pi.orig -e 's|#!\s+/bin/echo|# |g' $file 
done

files="ld_lib_path.csh"
for file in $files; do
%{__perl} -pi.orig -e 's|#!\s?/bin/csh|#  This file must be sourced inside csh 
using: source|g' $file 
done

files="ld_lib_path.sh"
for file in $files; do
%{__perl} -pi.orig -e 's|#!\s?/bin/sh|#  This file must be sourced inside 
(ba)sh using: .|g' $file 
done


%build
%ifarch x86_64
%configure --with-layout=fhs-system-x86_64
%else
%configure --with-layout=fhs-system
%endif
make %{?_smp_mflags}

# Now make the doc which requires gnustep-make itself.  So, we use the
# following wacky setup as suggested in the Documentation/GNUmakefile.
#
# "The GNUmakefile itself is written using gnustep-make.  If we find an
# existing gnustep-make installation, we use it.  Otherwise, we
# configure, compile and install gnustep-make into a temporary
# subdirectory, then we use that copy."
pushd Documentation
unset GNUSTEP_MAKEFILES
make

# Documentation gets installed here when we use the builtin craziness,
# 
%{_builddir}/%{name}-%{version}/Documentation/tmp-installation/System/Library/Documentation/
make install


%install
[ "%{buildroot}" != "/" ] && rm -rf %{buildroot}
make install DESTDIR=%{buildroot}

%ifarch x86_64
source FilesystemLayouts/fhs-system-x86_64
%else
source FilesystemLayouts/fhs-system
%endif
# Create profile files
%{__cat} <<EOF >gnustep.sh
source "${GNUSTEP_DEFAULT_PREFIX}${GNUSTEP_MAKEFILES}/GNUstep.sh"
EOF

%{__cat} <<EOF >gnustep.csh
source "${GNUSTEP_DEFAULT_PREFIX}${GNUSTEP_MAKEFILES}/GNUstep.csh"
EOF

%{__install} -Dp -m644 gnustep.sh 
%{buildroot}%{_sysconfdir}/profile.d/gnustep.sh
%{__install} -Dp -m644 gnustep.csh 
%{buildroot}%{_sysconfdir}/profile.d/gnustep.csh

pushd Documentation

# Use the freshly built but uninstalled man and info documentation
# in %{_builddir}/%{name}-%{version}/Documentation
rm -rf 
%{_builddir}/%{name}-%{version}/Documentation/tmp-installation/System/Library/Documentation/info
rm -rf 
%{_builddir}/%{name}-%{version}/Documentation/tmp-installation/System/Library/Documentation/man

%{__install} -Dp -m644 openapp.1 %{buildroot}%{_mandir}/man1/openapp.1
%{__install} -Dp -m644 GNUstep.7 %{buildroot}%{_mandir}/man7/GNUstep.7

# Don't deliver make.info as it conflicts with Make's make.info
info_file_list="faq filesystem gnustep-howto machines userfaq"
for infofile in ${info_file_list}; do
    install -Dp -m644 ${infofile}.info %{buildroot}%{_infodir}/${infofile}.info
done

popd

# Get rid of zero-length files
###find 
%{_builddir}/%{name}-%{version}/Documentation/tmp-installation/System/Library/Documentation
 -size 0c -type f -exec rm -f {} ';'


### Doesn't currently work as gnustep info files don't have
### have the correct info tags
#%post
#/sbin/install-info %{_infodir}/faq.info.gz %{_infodir}/dir || :
#/sbin/install-info %{_infodir}/filesystem.info.gz %{_infodir}/dir || :
#/sbin/install-info %{_infodir}/gnustep-howto.info.gz %{_infodir}/dir || :
#/sbin/install-info %{_infodir}/machines.info.gz %{_infodir}/dir || :
#/sbin/install-info %{_infodir}/userfaq.info.gz %{_infodir}/dir || :

#%preun
#if [ $1 = 0 ]; then
#    /sbin/install-info --delete %{_infodir}/faq.info.gz %{_infodir}/dir || :
#    /sbin/install-info --delete %{_infodir}/filesystem.info.gz  
%{_infodir}/dir || :
#    /sbin/install-info --delete %{_infodir}/gnustep-howto.info.gz 
%{_infodir}/dir || :
#    /sbin/install-info --delete %{_infodir}/machines.info.gz %{_infodir}/dir  
|| :
#    /sbin/install-info --delete %{_infodir}/userfaq.info.gz %{_infodir}/dir  
|| :
#fi


%clean
rm -rf %{buildroot}


%files
%defattr (-,root,root,-)
%doc ANNOUNCE ChangeLog* COPYING FAQ GNUstep-HOWTO INSTALL NEWS README 
RELEASENOTES 
%doc Documentation/tmp-installation/System/Library/Documentation/
%config(noreplace) %{_sysconfdir}/GNUstep/*
%{_sysconfdir}/profile.d/*
%{_bindir}/*
%{_datadir}/GNUstep/*
%{_mandir}/man?/*
%exclude %{_infodir}/*.info*


%changelog
* Mon Mar 10 2008 Gareth Armstrong <address@hidden> - 2.0.4-1.ocek
- Update to 2.0.4
- Minor tweak to gnustep-make-2.0.4-fhs-system.patch which is now upstream
- Use upstream GNUmakefile.in which is based on our old patch and pull in 
GNUstep-strict-v2.conf.in
- As per mail from Nicola Pero, kill shebangs in filesystem.*, GNUstep.*, 
ld_lib_path.* and GNUstep-reset.sh script files

* Mon Dec 17 2007 Gareth Armstrong <address@hidden> - 2.0.2-1.ocek
- Update to 2.0.2
- License change to GPLv3

* Tue May 29 2007 Gareth Armstrong <address@hidden> - 2.0.1-1.ocek
- Update to 2.0.1 and drop cummulative patch which is now upstream
- Update fhs-system layout patch and enable for x86_64 filesystem layout

* Thu May 24 2007 Gareth Armstrong <address@hidden> - 2.0.0-2.ocek
- Patch fhs-system filesystem layout to use std info and man directories

* Thu May 24 2007 Gareth Armstrong <address@hidden> - 2.0.0-1.ocek
- Update to 2.0.0, brings new filesystem support
- Patch GNUmakefile.in to satisfy rpmlint and set permissions as they should be
- Add patch of cummulative changes and fixes from gnustep-make svn repository
- Build and deliver the doc

* Tue Sep  5 2006 Gareth Armstrong <address@hidden> - 1.13.0-1
- Update to 1.13.0
- Minor tidy up to spec file

* Mon Mar 20 2006 Gareth Armstrong <address@hidden> - 1.12.0-1
- Update to 1.12.0
- Some spec file tidy up

* Mon Jan  9 2006 Gareth Armstrong <address@hidden> - 1.11.2-1
- Update to 1.11.2
- Hack for makedir variable when building a rpm being incorrectly set

* Fri Jul 29 2005 Gareth Armstrong <address@hidden> - 1.11.0-1
- Upstream to version 1.11.0
- Major re-org and clean up to spec file

diff -r a524a9e741ab -r dd94180463d3 FilesystemLayouts/fhs-system-x86_64
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/FilesystemLayouts/fhs-system-x86_64       Mon Mar 10 14:19:46 2008 +0100
@@ -0,0 +1,91 @@
+#
+# FHS (Filesystem Hierarchy Standard) filesystem layout for system 
installations
+#
+# This is the standard FHS Unix filesystem layout to use when
+# installing into /usr.  Use this if you want GNUstep to blend into
+# your GNU/Linux filesystem (or any other Unix with a similar
+# filesystem) and you are compiling gnustep-make so that it can be
+# shipped as part of a distribution/basic system installation.
+#
+# We put SYSTEM into /usr, and LOCAL into /usr/local.  This allows you
+# to make a distinction between stuff that you ship as part of your
+# system/distribution, and the local stuff installed by the local
+# sysadmin.  Make sure you compile/install all packages that you want
+# to go into /usr (ie, be part of the system/distribution) using 
+# 'make install GNUSTEP_INSTALLATION_DOMAIN=SYSTEM'
+#
+# To get system packages to work in this layout, you need /usr/bin in
+# your PATH, and /usr/lib64 in your /etc/ld.so.conf (or equivalent for
+# your Unix).  Don't forget to run ldconfig after installing a
+# library!
+#
+# Your users will need to also add /usr/local/bin to PATH and
+# /usr/local/lib64 to /etc/ld.so.conf (or equivalent for your Unix) if
+# they want to use the LOCAL domain.  To use gnustep-make in this
+# environment, use 'export
+# GNUSTEP_MAKEFILES=/usr/share/GNUstep/Makefiles'
+
+# By default, we install into /usr, but this can be overridden
+# by using ./configure --prefix=xxx when configuring.
+GNUSTEP_DEFAULT_PREFIX=/usr
+
+# These are only used by gnustep-base to implement the NSUserDirectory
+# API.  We never install anything in them.  They will be used as they
+# are without $prefix.
+GNUSTEP_SYSTEM_USERS_DIR=/home
+GNUSTEP_NETWORK_USERS_DIR=/home
+GNUSTEP_LOCAL_USERS_DIR=/home
+
+# NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL
+# paths.
+GNUSTEP_MAKEFILES=/share/GNUstep/Makefiles
+
+GNUSTEP_SYSTEM_APPS=/lib64/GNUstep/Applications
+GNUSTEP_SYSTEM_ADMIN_APPS=/lib64/GNUstep/Applications
+GNUSTEP_SYSTEM_WEB_APPS=/lib64/GNUstep/WebApplications
+GNUSTEP_SYSTEM_TOOLS=/bin
+GNUSTEP_SYSTEM_ADMIN_TOOLS=/sbin
+GNUSTEP_SYSTEM_LIBRARY=/lib64/GNUstep
+GNUSTEP_SYSTEM_HEADERS=/include
+GNUSTEP_SYSTEM_LIBRARIES=/lib64
+GNUSTEP_SYSTEM_DOC=/share/GNUstep/Documentation
+GNUSTEP_SYSTEM_DOC_MAN=/share/man
+GNUSTEP_SYSTEM_DOC_INFO=/share/info
+
+GNUSTEP_NETWORK_APPS=/local/lib64/GNUstep/Applications
+GNUSTEP_NETWORK_ADMIN_APPS=/local/lib64/GNUstep/Applications
+GNUSTEP_NETWORK_WEB_APPS=/lib64/GNUstep/WebApplications
+GNUSTEP_NETWORK_TOOLS=/local/bin
+GNUSTEP_NETWORK_ADMIN_TOOLS=/local/sbin
+GNUSTEP_NETWORK_LIBRARY=/local/lib64/GNUstep
+GNUSTEP_NETWORK_HEADERS=/local/include
+GNUSTEP_NETWORK_LIBRARIES=/local/lib64
+GNUSTEP_NETWORK_DOC=/local/share/GNUstep/Documentation
+GNUSTEP_NETWORK_DOC_MAN=/local/share/man
+GNUSTEP_NETWORK_DOC_INFO=/local/share/info
+
+GNUSTEP_LOCAL_APPS=/local/lib64/GNUstep/Applications
+GNUSTEP_LOCAL_ADMIN_APPS=/local/lib64/GNUstep/Applications
+GNUSTEP_LOCAL_WEB_APPS=/local/lib64/GNUstep/WebApplications
+GNUSTEP_LOCAL_TOOLS=/local/bin
+GNUSTEP_LOCAL_ADMIN_TOOLS=/local/sbin
+GNUSTEP_LOCAL_LIBRARY=/local/lib64/GNUstep
+GNUSTEP_LOCAL_HEADERS=/local/include
+GNUSTEP_LOCAL_LIBRARIES=/local/lib64
+GNUSTEP_LOCAL_DOC=/local/share/GNUstep/Documentation
+GNUSTEP_LOCAL_DOC_MAN=/local/share/man
+GNUSTEP_LOCAL_DOC_INFO=/local/share/info
+
+GNUSTEP_USER_DIR_APPS=GNUstep/Applications
+GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin
+GNUSTEP_USER_DIR_WEB_APPS=GNUstep/WebApplications
+GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools
+GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin
+GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library
+GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers
+GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries
+GNUSTEP_USER_DIR_DOC=GNUstep/Library/Documentation
+GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Library/Documentation/man
+GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Library/Documentation/info
+GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf
+GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults
diff -r 48f12f4412c1 FilesystemLayouts/fhs-system
--- a/FilesystemLayouts/fhs-system      Mon Mar 10 14:03:20 2008 +0100
+++ b/FilesystemLayouts/fhs-system      Mon Mar 10 14:14:00 2008 +0100
@@ -49,8 +49,8 @@ GNUSTEP_SYSTEM_HEADERS=/include
 GNUSTEP_SYSTEM_HEADERS=/include
 GNUSTEP_SYSTEM_LIBRARIES=/lib
 GNUSTEP_SYSTEM_DOC=/share/GNUstep/Documentation
-GNUSTEP_SYSTEM_DOC_MAN=/man
-GNUSTEP_SYSTEM_DOC_INFO=/info
+GNUSTEP_SYSTEM_DOC_MAN=/share/man
+GNUSTEP_SYSTEM_DOC_INFO=/share/info
 
 GNUSTEP_NETWORK_APPS=/local/lib/GNUstep/Applications
 GNUSTEP_NETWORK_ADMIN_APPS=/local/lib/GNUstep/Applications
@@ -61,8 +61,8 @@ GNUSTEP_NETWORK_HEADERS=/local/include
 GNUSTEP_NETWORK_HEADERS=/local/include
 GNUSTEP_NETWORK_LIBRARIES=/local/lib
 GNUSTEP_NETWORK_DOC=/local/share/GNUstep/Documentation
-GNUSTEP_NETWORK_DOC_MAN=/local/man
-GNUSTEP_NETWORK_DOC_INFO=/local/info
+GNUSTEP_NETWORK_DOC_MAN=/local/share/man
+GNUSTEP_NETWORK_DOC_INFO=/local/share/info
 
 GNUSTEP_LOCAL_APPS=/local/lib/GNUstep/Applications
 GNUSTEP_LOCAL_ADMIN_APPS=/local/lib/GNUstep/Applications
@@ -73,8 +73,8 @@ GNUSTEP_LOCAL_HEADERS=/local/include
 GNUSTEP_LOCAL_HEADERS=/local/include
 GNUSTEP_LOCAL_LIBRARIES=/local/lib
 GNUSTEP_LOCAL_DOC=/local/share/GNUstep/Documentation
-GNUSTEP_LOCAL_DOC_MAN=/local/man
-GNUSTEP_LOCAL_DOC_INFO=/local/info
+GNUSTEP_LOCAL_DOC_MAN=/local/share/man
+GNUSTEP_LOCAL_DOC_INFO=/local/share/info
 
 GNUSTEP_USER_DIR_APPS=GNUstep/Applications
 GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin
diff -r 48f12f4412c1 FilesystemLayouts/fhs-system-x86_64
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/FilesystemLayouts/fhs-system-x86_64       Mon Mar 10 14:14:00 2008 +0100
@@ -0,0 +1,91 @@
+#
+# FHS (Filesystem Hierarchy Standard) filesystem layout for system 
installations
+#
+# This is the standard FHS Unix filesystem layout to use when
+# installing into /usr.  Use this if you want GNUstep to blend into
+# your GNU/Linux filesystem (or any other Unix with a similar
+# filesystem) and you are compiling gnustep-make so that it can be
+# shipped as part of a distribution/basic system installation.
+#
+# We put SYSTEM into /usr, and LOCAL into /usr/local.  This allows you
+# to make a distinction between stuff that you ship as part of your
+# system/distribution, and the local stuff installed by the local
+# sysadmin.  Make sure you compile/install all packages that you want
+# to go into /usr (ie, be part of the system/distribution) using 
+# 'make install GNUSTEP_INSTALLATION_DOMAIN=SYSTEM'
+#
+# To get system packages to work in this layout, you need /usr/bin in
+# your PATH, and /usr/lib64 in your /etc/ld.so.conf (or equivalent for
+# your Unix).  Don't forget to run ldconfig after installing a
+# library!
+#
+# Your users will need to also add /usr/local/bin to PATH and
+# /usr/local/lib64 to /etc/ld.so.conf (or equivalent for your Unix) if
+# they want to use the LOCAL domain.  To use gnustep-make in this
+# environment, use 'export
+# GNUSTEP_MAKEFILES=/usr/share/GNUstep/Makefiles'
+
+# By default, we install into /usr, but this can be overridden
+# by using ./configure --prefix=xxx when configuring.
+GNUSTEP_DEFAULT_PREFIX=/usr
+
+# These are only used by gnustep-base to implement the NSUserDirectory
+# API.  We never install anything in them.  They will be used as they
+# are without $prefix.
+GNUSTEP_SYSTEM_USERS_DIR=/home
+GNUSTEP_NETWORK_USERS_DIR=/home
+GNUSTEP_LOCAL_USERS_DIR=/home
+
+# NB: $prefix will be added to all the MAKEFILES/SYSTEM/NETWORK/LOCAL
+# paths.
+GNUSTEP_MAKEFILES=/share/GNUstep/Makefiles
+
+GNUSTEP_SYSTEM_APPS=/lib64/GNUstep/Applications
+GNUSTEP_SYSTEM_ADMIN_APPS=/lib64/GNUstep/Applications
+GNUSTEP_SYSTEM_WEB_APPS=/lib64/GNUstep/WebApplications
+GNUSTEP_SYSTEM_TOOLS=/bin
+GNUSTEP_SYSTEM_ADMIN_TOOLS=/sbin
+GNUSTEP_SYSTEM_LIBRARY=/lib64/GNUstep
+GNUSTEP_SYSTEM_HEADERS=/include
+GNUSTEP_SYSTEM_LIBRARIES=/lib64
+GNUSTEP_SYSTEM_DOC=/share/GNUstep/Documentation
+GNUSTEP_SYSTEM_DOC_MAN=/share/man
+GNUSTEP_SYSTEM_DOC_INFO=/share/info
+
+GNUSTEP_NETWORK_APPS=/local/lib64/GNUstep/Applications
+GNUSTEP_NETWORK_ADMIN_APPS=/local/lib64/GNUstep/Applications
+GNUSTEP_NETWORK_WEB_APPS=/lib64/GNUstep/WebApplications
+GNUSTEP_NETWORK_TOOLS=/local/bin
+GNUSTEP_NETWORK_ADMIN_TOOLS=/local/sbin
+GNUSTEP_NETWORK_LIBRARY=/local/lib64/GNUstep
+GNUSTEP_NETWORK_HEADERS=/local/include
+GNUSTEP_NETWORK_LIBRARIES=/local/lib64
+GNUSTEP_NETWORK_DOC=/local/share/GNUstep/Documentation
+GNUSTEP_NETWORK_DOC_MAN=/local/share/man
+GNUSTEP_NETWORK_DOC_INFO=/local/share/info
+
+GNUSTEP_LOCAL_APPS=/local/lib64/GNUstep/Applications
+GNUSTEP_LOCAL_ADMIN_APPS=/local/lib64/GNUstep/Applications
+GNUSTEP_LOCAL_WEB_APPS=/local/lib64/GNUstep/WebApplications
+GNUSTEP_LOCAL_TOOLS=/local/bin
+GNUSTEP_LOCAL_ADMIN_TOOLS=/local/sbin
+GNUSTEP_LOCAL_LIBRARY=/local/lib64/GNUstep
+GNUSTEP_LOCAL_HEADERS=/local/include
+GNUSTEP_LOCAL_LIBRARIES=/local/lib64
+GNUSTEP_LOCAL_DOC=/local/share/GNUstep/Documentation
+GNUSTEP_LOCAL_DOC_MAN=/local/share/man
+GNUSTEP_LOCAL_DOC_INFO=/local/share/info
+
+GNUSTEP_USER_DIR_APPS=GNUstep/Applications
+GNUSTEP_USER_DIR_ADMIN_APPS=GNUstep/Applications/Admin
+GNUSTEP_USER_DIR_WEB_APPS=GNUstep/WebApplications
+GNUSTEP_USER_DIR_TOOLS=GNUstep/Tools
+GNUSTEP_USER_DIR_ADMIN_TOOLS=GNUstep/Tools/Admin
+GNUSTEP_USER_DIR_LIBRARY=GNUstep/Library
+GNUSTEP_USER_DIR_HEADERS=GNUstep/Library/Headers
+GNUSTEP_USER_DIR_LIBRARIES=GNUstep/Library/Libraries
+GNUSTEP_USER_DIR_DOC=GNUstep/Library/Documentation
+GNUSTEP_USER_DIR_DOC_MAN=GNUstep/Library/Documentation/man
+GNUSTEP_USER_DIR_DOC_INFO=GNUstep/Library/Documentation/info
+GNUSTEP_USER_CONFIG_FILE=.GNUstep.conf
+GNUSTEP_USER_DEFAULTS_DIR=GNUstep/Defaults
diff -r dd94180463d3 GNUmakefile.in
--- a/GNUmakefile.in    Mon Mar 10 14:19:46 2008 +0100
+++ b/GNUmakefile.in    Mon Mar 10 14:49:07 2008 +0100
@@ -2,10 +2,10 @@
 #
 #   Main GNUmakefile for the GNUstep GNUmakefile Package.
 #
-#   Copyright (C) 1997-2006 Free Software Foundation, Inc.
+#   Copyright (C) 1997-2008 Free Software Foundation, Inc.
 #
 #   Author: Scott Christley <address@hidden>
-#   Author: Nicola Pero <address@hidden>
+#   Author: Nicola Pero <address@hidden>
 #
 #   This file is part of the GNUstep Makefile Package.
 #
@@ -19,6 +19,30 @@
 #   If not, write to the Free Software Foundation,
 #   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
+# Disable all built-in suffixes for performance.
+.SUFFIXES:
+
+# Disable all built-in rules with a vague % as target, for performance.
+%: %.c
+
+%: %.cpp
+
+%: %.cc
+
+%: %.C
+
+(%): %
+
+%:: %,v
+
+%:: RCS/%,v
+
+%:: RCS/%
+
+%:: s.%
+
+%:: SCCS/s.%
+
 #
 # I've thought about using the Makefile package files
 # to install the GNUmakefile package, a cool little recursion,
@@ -36,7 +60,11 @@ DESTDIR =
 
 # 'special_prefix' is an old alias for DESTDIR.
 ifneq ($(special_prefix),)
-  $(warning "WARNING: special_prefix is deprecated.  Please use DESTDIR 
instead")
+  ifeq ($(GNUSTEP_MAKE_STRICT_V2_MODE),yes)
+    $(error "ERROR: special_prefix is deprecated.  Please use DESTDIR instead")
+  else
+    $(warning "WARNING: special_prefix is deprecated.  Please use DESTDIR 
instead")
+  endif
   DESTDIR = $(special_prefix)
 endif
 
@@ -83,8 +111,7 @@ MAKE_FILES = aggregate.make application.
        tool.make ctool.make test-library.make \
        objc.make test-application.make test-tool.make subproject.make \
        palette.make gswapp.make gswbundle.make clibrary.make \
-       documentation.make \
-       java-executable.template java-tool.make framework.make \
+       documentation.make java-tool.make framework.make \
        native-library.make spec-rules.template \
         tar-exclude-list gnustep-make-help
 
@@ -110,6 +137,16 @@ INSTANCE_DOC_MAKE_FILES = autogsdoc.make
 INSTANCE_DOC_MAKE_FILES = autogsdoc.make gsdoc.make install_files.make \
                           javadoc.make latex.make texi.make
 
+# Decide which version of the GNUstep.conf file we are going to
+# install; the standard one, or the strict gnustep-make v2 one ?
+ifeq ($(GNUSTEP_MAKE_STRICT_V2_MODE),yes)
+  GNUSTEP_DOT_CONF_FILE = GNUstep-strict-v2.conf
+else
+  GNUSTEP_DOT_CONF_FILE = GNUstep.conf
+endif
+
+# You can type 'make messages=yes' to see exactly which commands are
+# being executed.  Else we only print a summary description.
 ifeq ($(messages),yes)
   EC = 
 else
@@ -117,7 +154,7 @@ endif
 endif
 
 all: generated-files
-       $(EC)(echo "Thanks.  All is ready to install.")
+       $(EC)(echo "Thanks.  All is ready: type 'make install' to install 
gnustep-make.")
 
 install: generated-files
        $(EC)(echo "Creating system tools directory: $(tooldir)"; \
@@ -136,7 +173,7 @@ install: generated-files
                "$(makedir)/Instance/Documentation")
        $(EC)(echo "Installing GNUstep configuration file in 
$(GNUSTEP_CONFIG_FILE)"; \
         "$(srcdir)/mkinstalldirs" "$(GNUSTEP_CONFIG_FILE_DIR)"; \
-        $(INSTALL_DATA) GNUstep.conf "$(GNUSTEP_CONFIG_FILE)")
+        $(INSTALL_DATA) $(GNUSTEP_DOT_CONF_FILE) "$(GNUSTEP_CONFIG_FILE)")
         $(EC)(echo "Installing gnustep-make support software")
         $(EC)(for f in config.guess config.sub install-sh mkinstalldirs \
                clean_cpu.sh clean_os.sh \
@@ -175,13 +212,14 @@ install: generated-files
             $(INSTALL_DATA) "$(srcdir)/Instance/Documentation/$$f" \
                             "$(makedir)/Instance/Documentation"; \
           done; \
-          $(INSTALL_DATA) "$(srcdir)/app-wrapper.template" "$(makedir)"; \
+          $(INSTALL_PROGRAM) -m 755 "$(srcdir)/app-wrapper.template" 
"$(makedir)"; \
+          $(INSTALL_PROGRAM) -m 755 "$(srcdir)/java-executable.template" 
"$(makedir)"; \
+          $(INSTALL_PROGRAM) -m 755 executable.template "$(makedir)"; \
           $(INSTALL_DATA) "$(srcdir)/nsi-app.template" "$(makedir)"; \
-          $(INSTALL_DATA) executable.template "$(makedir)"; \
           $(INSTALL_DATA) config-noarch.make "$(makedir)"; \
           $(INSTALL_DATA) filesystem.make "$(makedir)"; \
           $(INSTALL_DATA) config.make "$(makedir)/$(GNUSTEP_TARGET_LDIR)")
-       $(EC)(echo "Installing manpages"; \
+       $(EC)(echo "Installing (and compressing) manpages"; \
          "$(srcdir)/mkinstalldirs" "$(mandir)/man1" \
                                  "$(mandir)/man7"; \
          $(INSTALL_DATA) "$(srcdir)/Documentation/debugapp.1" 
"$(mandir)/man1"; \
@@ -200,10 +238,6 @@ install: generated-files
           echo "Stripping makefiles and shell scripts..."; \
           cd "$(makedir)"; ./strip_makefiles.sh; \
           fi)
-
-# FIXME - review the issue of this config.site.  What is it used for ?
-#       $(EC)($(srcdir)/mkinstalldirs $(GNUSTEP_SYSTEM_ROOT)/share; \
-#         $(INSTALL_DATA) $(srcdir)/config.site $(GNUSTEP_SYSTEM_ROOT)/share)
 
 uninstall:
        rm -f "$(mandir)/man1/debugapp.1" "$(mandir)/man1/debugapp.1.gz"; \
@@ -247,6 +281,7 @@ uninstall:
        done
        rm -f "$(makedir)/executable.template"
        rm -f "$(makedir)/app-wrapper.template"
+       rm -f "$(makedir)/java-executable.template"
        rm -f "$(makedir)/nsi-app.template"
        rm -f "$(GNUSTEP_SYSTEM_ROOT)/share/config.site"
        rm -f "$(makedir)/config-noarch.make"
@@ -277,7 +312,7 @@ distclean: clean
        rm -f openapp opentool executable.template
        rm -f GNUstep.sh GNUstep.csh fixpath.sh gnustep-config
        rm -f filesystem.make filesystem.sh filesystem.csh
-       rm -f gnustep-make.spec GNUstep.conf
+       rm -f gnustep-make.spec GNUstep.conf GNUstep-strict-v2.conf
        rm -f config-precomp-test.out config-precomp-test.h.gch 
config-precomp-test.log
 
 svn-tag:
@@ -344,7 +379,7 @@ rpm: test-RPM_TOPDIR dist
 
 generated-files: GNUmakefile GNUstep.sh GNUstep.csh fixpath.sh 
config-noarch.make config.make \
                  openapp opentool gnustep-make.spec executable.template 
gnustep-config \
-                 filesystem.make filesystem.sh filesystem.csh GNUstep.conf
+                 filesystem.make filesystem.sh filesystem.csh GNUstep.conf 
GNUstep-strict-v2.conf
 
 GNUmakefile: GNUmakefile.in config.status
        $(SHELL) config.status
@@ -356,6 +391,9 @@ GNUstep.csh: GNUstep.csh.in
        $(SHELL) config.status
 
 GNUstep.conf: GNUstep.conf.in
+       $(SHELL) config.status
+
+GNUstep-strict-v2.conf: GNUstep-strict-v2.conf.in
        $(SHELL) config.status
 
 fixpath.sh: fixpath.sh.in
diff -r dd94180463d3 GNUstep-strict-v2.conf.in
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/GNUstep-strict-v2.conf.in Mon Mar 10 14:49:07 2008 +0100
@@ -0,0 +1,151 @@
+# This is the GNUstep configuration file.
+
+# This is the "strict version 2 mode" version of the file, which is
+# identical to the normal one, but all the obsolete v1 variables
+# (GNUSTEP_SYSTEM_ROOT, GNUSTEP_LOCAL_ROOT, GNUSTEP_NETWORK_ROOT,
+# GNUSTEP_USER_DIR) have been removed.
+
+# Any line starting with a '#' is a comment.
+# Empty lines are ignored.
+# Every other line in this file must be of the form
+#   XXX=YYY
+# where there should be no spaces around the '=' (this is because we
+# include this file in shell scripts and makefiles, and sh syntax
+# requires no spaces around the '=').
+#
+# Standard sh quotes can be used in YYY but only at runtime; they can 
+# not be used while building.
+
+# GNUstep can use up to 4 domains at the same time.  They are System,
+# Local, Network and User.  You can install your programs / resources
+# in any of these domains.  This file mostly deals with configuring
+# how the domains map to your filesystem.
+
+# IMPORTANT: Don't delete lines from this file unless you want
+# the values hardcoded in the packages to be used.  If you want
+# to suppress the network domain, set all its paths to be the same
+# as the system domain.  If you want to suppress the local domain,
+# set all its paths to be the same as the network domain.  If you
+# want to suppress the user domain, set its paths to be the same
+# as the local domain.  You can not suppress the system domain.
+
+# The paths should not include a '/' at the end.
+
+# The name of the user config file.  This file can override
+# some settings in this file.  Usually used by users that want
+# to install things into their GNUstep user domain and/or have
+# many such domains.
address@hidden@
+
+# The name of the user directory where defaults (eg, preferences) are
+# stored.  If it does not start with a '/', it will be considered
+# relative to the user home directory.
address@hidden@
+
+
+# This is where the gnustep-make Makefiles are installed.
+# Traditionally, this is /usr/GNUstep/System/Library/Makefiles
address@hidden@
+
+
+# This is where the user home directories are.  Only used to provide
+# NSUserDirectory in gnustep-base.  Never used anywhere else.
address@hidden@
address@hidden@
address@hidden@
+
+
+# This is where System GUI Applications get installed.
+# Traditionally it is /usr/GNUstep/System/Applications.
address@hidden@
+
+# This is where System GUI Applications that only the
+# Administrator can use get installed.
+# Traditionally it is /usr/GNUstep/System/Applications/Admin.
address@hidden@
+
+# This is where System Web Applications (GSWeb, SOPE) get
+# installed.
+# Traditionally it is /usr/GNUstep/System/Library/WebApplications.
address@hidden@
+
+# This is where System Command-Line Tools get installed.
+# Traditionally it is /usr/GNUstep/System/Tools.
address@hidden@
+
+# This is where System Command-Line Tools that only the
+# Administrator can use get installed.  Important: this
+# should not be in the PATH of normal users.
+# Traditionally it is /usr/GNUstep/System/Tools/Admin.
address@hidden@
+
+# This is where System resources get installed.  This directory will
+# contain a lot of executable code since *step traditionally likes to
+# bundle executables and resources together.
+# Traditionally it is /usr/GNUstep/System/Library.
address@hidden@
+
+# This is where System headers get installed.  They are the
+# library .h headers.
+# Traditionally it is /usr/GNUstep/System/Library/Headers.
address@hidden@
+
+# This is where System libraries get installed.  By libraries we mean
+# the shared/static object files that you can link into programs.
+# Traditionally it is /usr/GNUstep/System/Library/Libraries.
address@hidden@
+
+# This is where System documentation get installed.  This is known
+# not to contain any executable, so we keep it separate.
+# Traditionally it is /usr/GNUstep/System/Library/Documentation.
address@hidden@
+
+# This is where System man pages get installed.
+# Traditionally it is /usr/GNUstep/System/Library/Documentation/man.
address@hidden@
+
+# This is where System info pages get installed.
+# Traditionally it is /usr/GNUstep/System/Library/Documentation/info.
address@hidden@
+
+
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
+
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
+
+# Important: settings in the User should normally be relative paths,
+# and will be interpreted as relative to the user's directory.  This
+# allows each user to have their own domain to install things.  You
+# can set them to be absolute, mostly if you want to disable them
+# by setting them equal to the ones in the Network domain.
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@
address@hidden@

reply via email to

[Prev in Thread] Current Thread [Next in Thread]