octave/macros.octave

76 lines
4.2 KiB
Plaintext
Raw Normal View History

2011-02-23 17:40:13 +00:00
# Octave packaging macros
# Octave binary API provided
%octave_api %(octave-config -p API_VERSION || echo 0)
2011-02-23 17:40:13 +00:00
# Octave Package Directories
%octshareprefix %{_datadir}/octave
%octprefix %{octshareprefix}/packages
%octarchprefix %{_libdir}/octave/packages
2011-02-23 17:56:38 +00:00
%octpkgdir %{octprefix}/%{octpkg}-%{version}
2011-02-23 17:40:13 +00:00
%octpkglibdir %{octarchprefix}/%{octpkg}-%{version}
# Run an octave command - quietly with no startup files
%octave_cmd() octave -H -q --no-window-system --no-site-file --eval '%*';
2011-02-23 17:40:13 +00:00
# For compiled tarfile name
%octave_host %(octave-config -p CANONICAL_HOST_TYPE || echo 0)
2013-12-28 23:33:27 +00:00
# Build unpacked source directory into a package tar file in a temporary location
2016-12-07 05:44:18 +00:00
# Pass -T to use source tarball
%octave_pkg_build(T) %{lua:
2016-12-07 21:36:17 +00:00
if (rpm.expand("%{-T}") == "-T") then
octpkg_tarfile = rpm.expand("%{SOURCE0}")
else
2016-12-07 05:44:18 +00:00
octpkg_tarfile = rpm .expand("%{_tmppath}/%{octpkg}-%{version}.tar.gz")
print("tar czf "..octpkg_tarfile.." -C "..rpm.expand("%{_builddir} %{buildsubdir}").."\\n")
end
2016-12-07 21:36:17 +00:00
-- Avoid a warning from pkg build about making the build directory
-- and use a clean directory as octave pkg build will delete contents
print(rpm.expand("mkdir -p %{_builddir}/%{buildsubdir}/build\\n"))
-- This fails to keep the arguments to %octave_cmd for some reason
2016-12-07 05:44:18 +00:00
-- print(rpm.expand("%octave_cmd pkg build -verbose -nodeps %{_builddir}/%{buildsubdir} "..octpkg_tarfile).."\\n")
2016-12-08 14:06:04 +00:00
print(rpm.expand("strace -f -s 1024 -o octave.strace octave -H -V --no-window-system --no-site-file --eval 'pkg build -verbose -nodeps %{_builddir}/%{buildsubdir}/build "..octpkg_tarfile).."'\\n")
print("ls -l *\\n")
2016-12-07 21:36:17 +00:00
-- Extract the source tarball for debuginfo generation
print(rpm.expand("tar xf "..octpkg_tarfile.." -C %{_builddir}/%{buildsubdir}/build\\n"))
print("ls -l *\\n")
print("cat octave.strace\\n")
2016-12-07 05:44:18 +00:00
}
2011-02-23 17:40:13 +00:00
# Install a package. We use the octave pkg install command to install the
# built package into the buildroot. We also put a note to prevent the root
# user from removing the package with the octave pkg uninstall command
# We call unlink to remove the 'octave_packages' file which contains the
# buildroot string and needs to be generated at package install time.
%octave_pkg_install \
mkdir -p %{buildroot}%{octprefix} \
mkdir -p %{buildroot}%{octarchprefix} \
2016-12-07 21:36:17 +00:00
%octave_cmd pkg("prefix","%{buildroot}%{octprefix}","%{buildroot}%{octarchprefix}");pkg("global_list",fullfile("%{buildroot}%{octshareprefix}","octave_packages"));pkg("local_list",fullfile("%{buildroot}%{octshareprefix}","octave_packages"));pkg("install","-nodeps","-verbose","%{_builddir}/%{buildsubdir}/build/%{octpkg}-%{version}-%{octave_host}-%{octave_api}.tar.gz");unlink(pkg("local_list"));unlink(pkg("global_list")); \
if [ -e %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m ] \
then \
mv %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m.orig \
fi \
echo "function on_uninstall (desc)" > %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m \
echo " error ('Can not uninstall %s installed by the redhat package manager', desc.name);" >> %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m \
echo "endfunction" >> %{buildroot}%{octpkgdir}/packinfo/on_uninstall.m \
%{nil}
2011-02-23 17:40:13 +00:00
# Run pkg tests - We need to reinstall to recreate 'octave_packages' so that
# octave can find the package, then remove 'octave_packages' again.
%octave_pkg_check \
2016-12-07 21:36:17 +00:00
%octave_cmd pkg("prefix","%{buildroot}%{octprefix}","%{buildroot}%{octarchprefix}");pkg("global_list",fullfile("%{buildroot}%{octshareprefix}","octave_packages"));pkg("local_list",fullfile("%{buildroot}%{octshareprefix}","octave_packages"));pkg("install","-nodeps","-verbose","%{_builddir}/%{buildsubdir}/build/%{octpkg}-%{version}-%{octave_host}-%{octave_api}.tar.gz");pkg("load","%{octpkg}");runtests("%{buildroot}%{octpkgdir}");unlink(pkg("local_list"));unlink(pkg("global_list")); \
%{nil}
2011-02-23 17:40:13 +00:00
# preun script - we need to remove our uninstall protection and perhaps
# run the package's own uninstall script.
%octave_pkg_preun \
if [ -e %{octpkgdir}/packinfo/on_uninstall.m.orig ]; then \
mv %{octpkgdir}/packinfo/on_uninstall.m.orig %{octpkgdir}/packinfo/on_uninstall.m \
cd %{octpkgdir}/packinfo \
%octave_cmd l=pkg("list");on_uninstall(l{cellfun(@(x)strcmp(x.name,"%{octpkg}"),l)}); \
else \
echo > %{octpkgdir}/packinfo/on_uninstall.m \
fi \
%{nil}