octave-maintainers
[Top][All Lists]
Advanced

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

Re: OctavePackaging


From: David Bateman
Subject: Re: OctavePackaging
Date: Sat, 12 May 2007 12:52:41 +0200
User-agent: Thunderbird 1.5.0.7 (X11/20060921)

Rafael Laboissiere wrote:
> * David Bateman <address@hidden> [2007-05-11 23:09]:
> 
>> Isn't there an automatic install process from CRAN? The same for Perl
>> from CPAN? Debian must live with these secondary package managers as
>> well. So my question was how does it?
> 
> http://wiki.debian.org/AliothPkgBioc
> 

To demonstrate my idea, I've updated the SRPM builds in octave-forge
with the ideas discussed. If you take the pkg.m from the CVS with a
2.9.10 RPM installed then the attached SRPM will build to an RPM that
can be installed with the "rpm -Uvh", can't be uninstalled with "pkg
uninstall <package>" and contains architecture dependent directories.

I also attach the corresponding SPEC file for the SRPM if you aren't on
an RPM based system so you can see how I modified the SPEC.

Regards
David

Attachment: octave_signal-1.0.0-1mdk.src.rpm
Description: audio/pn-realaudio-plugin

Name:           octave_signal
Version:        1.0.0
Release:        1%{?distsuffix}
Summary:        Signal Processing.
Group:          Applications/Engineering
License:        GPL version 2 or later
URL:            http://octave.sourceforge.net
Source0:        http://downloads.sourceforge.net/octave/signal-1.0.0.tar.gz
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root

## Package installs in a directory tree specific to the installed
## version of octave, so the following version dependency is necessary.
%define octave_ep  %(rpm -q --qf '%%{epoch}' octave)
%define octave_ver %(rpm -q --qf '%%{version}' octave)

Requires:       octave = %{octave_ep}:%{octave_ver}

BuildRequires:  octave >= 2.9.7
BuildRequires:  gcc-c++ gcc-gfortran libstdc++-devel
BuildRequires:  libstdc++-devel 
BuildRequires:  %(rpm -q --qf '%%{name}' %(rpm -q -f `which mkoctfile`))

%define builtpackage signal-1.0.0.tar.gz
%define octave octave-%{octave_ver}

%description
Signal processing tools, including filtering, windowing and display functions.

%prep
rm -fr signal-1.0.0
mkdir signal-1.0.0
cd signal-1.0.0
cp %{_sourcedir}/signal-1.0.0.tar.gz .
chmod a+r signal-1.0.0.tar.gz
mkdir -p install/signal
mkdir install/signal/inst

%build
cd signal-1.0.0
HOME=`pwd` %{octave} -H -q --no-site-file --eval 
"pkg('prefix',[pwd(),'/install']);pkg('local_list',[pwd(),'/install/.octave_packages']);pkg('global_list',[pwd(),'/install/.octave_packages']);pkg('install','-nodeps','signal-1.0.0.tar.gz')"
cd install
mv signal-1.0.0/packinfo/* signal
rm -rf signal-1.0.0/packinfo
if [ -d signal-1.0.0/doc ]; then mv signal-1.0.0/doc signal; fi
if [ -d signal-1.0.0/bin ]; then mv signal-1.0.0/bin signal; fi
if [ -e signal-1.0.0/PKG_ADD ]; then mv signal-1.0.0/PKG_ADD signal; fi
if [ -e signal-1.0.0/PKG_DEL ]; then mv signal-1.0.0/PKG_DEL signal; fi
mv signal-1.0.0/* signal/inst
rm -fr signal-1.0.0.tar.gz
cat << EOF > signal/on_uninstall.m
function on_uninstall (desc)
  error ("Can not uninstall signal-1.0.0 installed by the RPM package manager");
endfunction
EOF
tar czf ../%{builtpackage} signal

%install
cd signal-1.0.0
rm -rf %{buildroot}
mkdir -p %{buildroot}%{_datadir}
cp %{builtpackage} %{buildroot}%{_datadir}

%post
%{octave} -H -q --no-site-file --eval 
"warning('off','all');pkg('install','%{_datadir}/%{builtpackage}')"
rm %{_datadir}/%{builtpackage}

%postun
%{octave} -H -q --no-site-file --eval 
"prefix=pkg('prefix');unlink(fullfile(prefix,'signal-1.0.0','on_uninstall.m');pkg('uninstall','signal')"

%clean
rm -fr %{buildroot}

%files
%defattr(-,root,root)
%{_datadir}/*

%changelog
# Changelog for packages rebuilt on stable releases (leave it first):
%{!?_with_unstable:* %(LC_ALL=C date +"%a %b %d %Y") %{packager} 
%{version}-%{release}}
%{!?_with_unstable: - rebuild of %{version}-%{rel}%{?distsuffix} for 
%{distversion}}

* Sat May 12 2007 The Octave Community 1.0.0-1%{?distsuffix}
- Automatically created from octave-forge package

reply via email to

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