annotate scripts/pkg/pkg.m @ 13141:e81ddf9cacd5

maint: untabify and remove trailing whitespace from source files * bicg.m, gmres.m, pkg.m: Untabify and remove trailing whitespace. * libcruft/Makefile.am, libcruft/blas-xtra/cdotc3.f, libcruft/blas-xtra/cmatm3.f, libcruft/blas-xtra/ddot3.f, libcruft/blas-xtra/dmatm3.f, libcruft/blas-xtra/sdot3.f, libcruft/blas-xtra/smatm3.f, libcruft/blas-xtra/zdotc3.f, libcruft/blas-xtra/zmatm3.f, libcruft/lapack-xtra/crsf2csf.f, libcruft/lapack-xtra/zrsf2csf.f, liboctave/Array.cc, liboctave/DASPK-opts.in, liboctave/DASRT-opts.in, liboctave/DASSL-opts.in, liboctave/LSODE-opts.in, liboctave/Makefile.a,mliboctave/Quad-opts.in, liboctave/Sparse-perm-op-defs.h, scripts/Makefile.a,mscripts/deprecated/glpkmex.m, scripts/general/blkdiag.m, scripts/general/interp1.m, scripts/general/profshow.m, scripts/general/quadl.m, scripts/general/triplequad.m, scripts/help/__makeinfo__.m, scripts/io/strread.m, scripts/io/textread.m, scripts/io/textscan.m, scripts/linear-algebra/rank.m, scripts/miscellaneous/gzip.m, scripts/miscellaneous/private/__xzip__.m, scripts/miscellaneous/tempdir.m, scripts/miscellaneous/unpack.m, scripts/pkg/pkg.m, scripts/plot/allchild.m, scripts/plot/ancestor.m, scripts/plot/cla.m, scripts/plot/clf.m, scripts/plot/findall.m, scripts/plot/findobj.m, scripts/plot/gca.m, scripts/plot/gcf.m, scripts/plot/hggroup.m, scripts/plot/isfigure.m, scripts/plot/ishghandle.m, scripts/plot/legend.m, scripts/plot/line.m, scripts/plot/loglog.m, scripts/plot/patch.m, scripts/plot/print.m, scripts/plot/private/__quiver__.m, scripts/plot/private/__scatter__.m, scripts/plot/rectangle.m, scripts/plot/semilogx.m, scripts/plot/semilogy.m, scripts/plot/surface.m, scripts/plot/text.m, scripts/plot/title.m, scripts/plot/trisurf.m, scripts/plot/view.m, scripts/plot/whitebg.m, scripts/plot/xlabel.m, scripts/plot/xlim.m, scripts/plot/ylabel.m, scripts/plot/ylim.m, scripts/plot/zlabel.m, scripts/plot/zlim.m, scripts/polynomial/mkpp.m, scripts/polynomial/polygcd.m, scripts/polynomial/ppint.m, scripts/polynomial/ppjumps.m, scripts/polynomial/ppval.m, scripts/set/setxor.m, scripts/sparse/bicgstab.m, scripts/sparse/cgs.m, scripts/sparse/spconvert.m, scripts/specfun/nthroot.m, scripts/strings/strmatch.m, scripts/strings/untabify.m, scripts/testfun/demo.m, scripts/testfun/example.m, src/DLD-FUNCTIONS/filter.cc, src/DLD-FUNCTIONS/mgorth.cc, src/DLD-FUNCTIONS/quadcc.cc, src/DLD-FUNCTIONS/str2double.cc, src/Makefile.a,msrc/gl-render.cc, src/gl2ps-renderer.cc, src/graphics.cc, src/octave-config.cc.in, src/octave-config.in, src/ov-class.h, src/ov-fcn.h, src/profiler.cc, src/profiler.h, src/pt-binop.cc, src/pt-unop.cc, src/symtab.cc, src/txt-eng-ft.cc: Remove trailing whitespace.
author John W. Eaton <jwe@octave.org>
date Thu, 15 Sep 2011 12:51:10 -0400
parents cefd568ea073
children 635db52feab4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11523
fd0a3ac60b0e update copyright notices
John W. Eaton <jwe@octave.org>
parents: 11300
diff changeset
1 ## Copyright (C) 2005-2011 S�ren Hauberg
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
2 ## Copyright (C) 2010 VZLU Prague, a.s.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
3 ##
6440
98ee80702bca [project @ 2007-03-23 15:13:19 by jwe]
jwe
parents: 6378
diff changeset
4 ## This file is part of Octave.
98ee80702bca [project @ 2007-03-23 15:13:19 by jwe]
jwe
parents: 6378
diff changeset
5 ##
98ee80702bca [project @ 2007-03-23 15:13:19 by jwe]
jwe
parents: 6378
diff changeset
6 ## Octave is free software; you can redistribute it and/or modify it
98ee80702bca [project @ 2007-03-23 15:13:19 by jwe]
jwe
parents: 6378
diff changeset
7 ## under the terms of the GNU General Public License as published by
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6950
diff changeset
8 ## the Free Software Foundation; either version 3 of the License, or (at
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6950
diff changeset
9 ## your option) any later version.
6440
98ee80702bca [project @ 2007-03-23 15:13:19 by jwe]
jwe
parents: 6378
diff changeset
10 ##
98ee80702bca [project @ 2007-03-23 15:13:19 by jwe]
jwe
parents: 6378
diff changeset
11 ## Octave is distributed in the hope that it will be useful, but
98ee80702bca [project @ 2007-03-23 15:13:19 by jwe]
jwe
parents: 6378
diff changeset
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of
98ee80702bca [project @ 2007-03-23 15:13:19 by jwe]
jwe
parents: 6378
diff changeset
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
98ee80702bca [project @ 2007-03-23 15:13:19 by jwe]
jwe
parents: 6378
diff changeset
14 ## General Public License for more details.
98ee80702bca [project @ 2007-03-23 15:13:19 by jwe]
jwe
parents: 6378
diff changeset
15 ##
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
16 ## You should have received a copy of the GNU General Public License
7016
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6950
diff changeset
17 ## along with Octave; see the file COPYING. If not, see
93c65f2a5668 [project @ 2007-10-12 06:40:56 by jwe]
jwe
parents: 6950
diff changeset
18 ## <http://www.gnu.org/licenses/>.
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
19
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
20 ## -*- texinfo -*-
11547
e1851653d59c Eliminate @deffn macros.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
21 ## @deftypefn {Command} {} pkg @var{command} @var{pkg_name}
e1851653d59c Eliminate @deffn macros.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
22 ## @deftypefnx {Command} {} pkg @var{command} @var{option} @var{pkg_name}
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
23 ## Manage packages (groups of add-on functions) for Octave. Different actions
13141
e81ddf9cacd5 maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 12931
diff changeset
24 ## are available depending on the value of @var{command}.
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
25 ##
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
26 ## Available commands:
6032
dcecca0396e6 [project @ 2006-10-04 17:35:15 by jwe]
jwe
parents: 6025
diff changeset
27 ##
dcecca0396e6 [project @ 2006-10-04 17:35:15 by jwe]
jwe
parents: 6025
diff changeset
28 ## @table @samp
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
29 ##
6032
dcecca0396e6 [project @ 2006-10-04 17:35:15 by jwe]
jwe
parents: 6025
diff changeset
30 ## @item install
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
31 ## Install named packages. For example,
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
32 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
33 ## @example
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
34 ## pkg install image-1.0.0.tar.gz
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
35 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
36 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
37 ## @noindent
9307
c2923c27c877 Various documentation improvements
Rik <rdrider0-list@yahoo.com>
parents: 9258
diff changeset
38 ## installs the package found in the file @file{image-1.0.0.tar.gz}.
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
39 ##
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
40 ## The @var{option} variable can contain options that affect the manner
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8942
diff changeset
41 ## in which a package is installed. These options can be one or more of
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
42 ##
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
43 ## @table @code
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
44 ## @item -nodeps
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
45 ## The package manager will disable dependency checking. With this option it
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
46 ## is possible to install a package even when it depends on another package
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
47 ## which is not installed on the system. @strong{Use this option with care.}
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
48 ##
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
49 ## @item -noauto
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
50 ## The package manager will not automatically load the installed package
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
51 ## when starting Octave. This overrides any setting within the package.
6258
ea3a7e8469e9 [project @ 2007-01-30 20:17:19 by dbateman]
dbateman
parents: 6254
diff changeset
52 ##
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
53 ## @item -auto
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
54 ## The package manager will automatically load the installed package when
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
55 ## starting Octave. This overrides any setting within the package.
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
56 ##
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
57 ## @item -local
13141
e81ddf9cacd5 maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 12931
diff changeset
58 ## A local installation (package available only to current user) is forced,
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
59 ## even if the user has system privileges.
6258
ea3a7e8469e9 [project @ 2007-01-30 20:17:19 by dbateman]
dbateman
parents: 6254
diff changeset
60 ##
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
61 ## @item -global
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
62 ## A global installation (package available to all users) is forced, even if
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
63 ## the user doesn't normally have system privileges.
12642
f96b9b9f141b doc: Periodic grammarcheck and spellcheck of documentation.
Rik <octave@nomad.inbox5.com>
parents: 12561
diff changeset
64 ##
12561
0ade5992e374 Add documentation for '-forge' option (bug #32464).
Rik <octave@nomad.inbox5.com>
parents: 12167
diff changeset
65 ## @item -forge
0ade5992e374 Add documentation for '-forge' option (bug #32464).
Rik <octave@nomad.inbox5.com>
parents: 12167
diff changeset
66 ## Install a package directly from the Octave-Forge repository. This
0ade5992e374 Add documentation for '-forge' option (bug #32464).
Rik <octave@nomad.inbox5.com>
parents: 12167
diff changeset
67 ## requires an internet connection and the cURL library.
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
68 ##
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
69 ## @item -verbose
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
70 ## The package manager will print the output of all commands as
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
71 ## they are performed.
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
72 ## @end table
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
73 ##
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
74 ## @item update
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
75 ## Check installed Octave-Forge pacakages against repository and update any
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
76 ## outdated items. This requires an internet connection and the cURL library.
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
77 ## Usage:
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
78 ##
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
79 ## @example
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
80 ## pkg update
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
81 ## @end example
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
82 ##
6032
dcecca0396e6 [project @ 2006-10-04 17:35:15 by jwe]
jwe
parents: 6025
diff changeset
83 ## @item uninstall
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
84 ## Uninstall named packages. For example,
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
85 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
86 ## @example
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
87 ## pkg uninstall image
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
88 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
89 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
90 ## @noindent
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8942
diff changeset
91 ## removes the @code{image} package from the system. If another installed
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
92 ## package depends on the @code{image} package an error will be issued.
10793
be55736a0783 Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents: 10685
diff changeset
93 ## The package can be uninstalled anyway by using the @option{-nodeps} option.
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
94 ##
6032
dcecca0396e6 [project @ 2006-10-04 17:35:15 by jwe]
jwe
parents: 6025
diff changeset
95 ## @item load
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8942
diff changeset
96 ## Add named packages to the path. After loading a package it is
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8942
diff changeset
97 ## possible to use the functions provided by the package. For example,
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
98 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
99 ## @example
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
100 ## pkg load image
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
101 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
102 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
103 ## @noindent
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8942
diff changeset
104 ## adds the @code{image} package to the path. It is possible to load all
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
105 ## installed packages at once with the keyword @samp{all}. Usage:
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
106 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
107 ## @example
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
108 ## pkg load all
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
109 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
110 ##
6203
512d72ee321f [project @ 2006-12-06 18:00:13 by jwe]
jwe
parents: 6189
diff changeset
111 ## @item unload
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
112 ## Remove named packages from the path. After unloading a package it is
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
113 ## no longer possible to use the functions provided by the package. It is
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
114 ## possible to unload all installed packages at once with the keyword
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
115 ## @samp{all}. Usage:
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
116 ##
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
117 ## @example
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
118 ## pkg unload all
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
119 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
120 ##
6032
dcecca0396e6 [project @ 2006-10-04 17:35:15 by jwe]
jwe
parents: 6025
diff changeset
121 ## @item list
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
122 ## Show the list of currently installed packages. For example,
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
123 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
124 ## @example
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
125 ## installed_packages = pkg ("list")
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
126 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
127 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
128 ## @noindent
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
129 ## returns a cell array containing a structure for each installed package.
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
130 ##
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
131 ## If two output arguments are requested @code{pkg} splits the list of
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
132 ## installed packages into those which were installed by the current user,
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
133 ## and those which were installed by the system administrator.
13141
e81ddf9cacd5 maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 12931
diff changeset
134 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
135 ## @example
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
136 ## [user_packages, system_packages] = pkg ("list")
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
137 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
138 ##
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
139 ## The option '-forge' lists packages available at the Octave-Forge repository.
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
140 ## This requires an internet connection and the cURL library. For example:
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
141 ##
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
142 ## @example
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
143 ## oct_forge_pkgs = pkg ("list", "-forge")
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
144 ## @end example
12561
0ade5992e374 Add documentation for '-forge' option (bug #32464).
Rik <octave@nomad.inbox5.com>
parents: 12167
diff changeset
145 ##
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
146 ## @item describe
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
147 ## Show a short description of the named installed packages, with the option
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
148 ## '-verbose' also list functions provided by the package. For example,
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
149 ##
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
150 ## @example
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
151 ## pkg describe -verbose all
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
152 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
153 ##
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
154 ## @noindent
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
155 ## will describe all installed packages and the functions they provide.
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
156 ## If one output is requested a cell of structure containing the
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
157 ## description and list of functions of each package is returned as
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
158 ## output rather than printed on screen:
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
159 ##
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
160 ## @example
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
161 ## desc = pkg ("describe", "secs1d", "image")
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
162 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
163 ##
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
164 ## @noindent
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
165 ## If any of the requested packages is not installed, pkg returns an
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
166 ## error, unless a second output is requested:
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
167 ##
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
168 ## @example
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
169 ## [desc, flag] = pkg ("describe", "secs1d", "image")
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
170 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
171 ##
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
172 ## @noindent
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
173 ## @var{flag} will take one of the values "Not installed", "Loaded" or
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
174 ## "Not loaded" for each of the named packages.
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
175 ##
6034
5cbbf96b52da [project @ 2006-10-04 18:45:43 by jwe]
jwe
parents: 6033
diff changeset
176 ## @item prefix
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8942
diff changeset
177 ## Set the installation prefix directory. For example,
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
178 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
179 ## @example
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
180 ## pkg prefix ~/my_octave_packages
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
181 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
182 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
183 ## @noindent
9307
c2923c27c877 Various documentation improvements
Rik <rdrider0-list@yahoo.com>
parents: 9258
diff changeset
184 ## sets the installation prefix to @file{~/my_octave_packages}.
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
185 ## Packages will be installed in this directory.
6034
5cbbf96b52da [project @ 2006-10-04 18:45:43 by jwe]
jwe
parents: 6033
diff changeset
186 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
187 ## It is possible to get the current installation prefix by requesting an
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
188 ## output argument. For example:
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
189 ##
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
190 ## @example
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
191 ## pfx = pkg ("prefix")
6070
df821c22355c [project @ 2006-10-23 19:01:04 by jwe]
jwe
parents: 6055
diff changeset
192 ## @end example
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
193 ##
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
194 ## The location in which to install the architecture dependent files can be
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
195 ## independently specified with an addition argument. For example:
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
196 ##
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
197 ## @example
9153
5247e89688e1 Eliminate most overfull errors when running texi2pdf for generating pdf documentation
Rik <rdrider0-list@yahoo.com>
parents: 9079
diff changeset
198 ## pkg prefix ~/my_octave_packages ~/my_arch_dep_pkgs
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
199 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
200 ##
6189
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
201 ## @item local_list
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
202 ## Set the file in which to look for information on locally
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8942
diff changeset
203 ## installed packages. Locally installed packages are those that are
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
204 ## available only to the current user. For example:
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
205 ##
6189
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
206 ## @example
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
207 ## pkg local_list ~/.octave_packages
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
208 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
209 ##
6189
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
210 ## It is possible to get the current value of local_list with the following
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
211 ##
6189
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
212 ## @example
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
213 ## pkg local_list
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
214 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
215 ##
6189
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
216 ## @item global_list
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
217 ## Set the file in which to look for information on globally
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8942
diff changeset
218 ## installed packages. Globally installed packages are those that are
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
219 ## available to all users. For example:
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
220 ##
6189
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
221 ## @example
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
222 ## pkg global_list /usr/share/octave/octave_packages
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
223 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
224 ##
6189
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
225 ## It is possible to get the current value of global_list with the following
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
226 ##
6189
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
227 ## @example
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
228 ## pkg global_list
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
229 ## @end example
10821
693e22af08ae Grammarcheck documentation of m-files
Rik <octave@nomad.inbox5.com>
parents: 10793
diff changeset
230 ##
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
231 ## @item build
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
232 ## Build a binary form of a package or packages. The binary file produced
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
233 ## will itself be an Octave package that can be installed normally with
9051
1bf0ce0930be Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents: 8942
diff changeset
234 ## @code{pkg}. The form of the command to build a binary package is
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
235 ##
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
236 ## @example
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
237 ## pkg build builddir image-1.0.0.tar.gz @dots{}
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
238 ## @end example
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
239 ##
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
240 ## @noindent
9079
4d610aba7347 Cleanup documentation for system.texi, package.texi
Rik <rdrider0-list@yahoo.com>
parents: 9051
diff changeset
241 ## where @code{builddir} is the name of a directory where the temporary
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
242 ## installation will be produced and the binary packages will be found.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
243 ## The options @option{-verbose} and @option{-nodeps} are respected, while
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
244 ## all other options are ignored.
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
245 ##
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
246 ## @item rebuild
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
247 ## Rebuild the package database from the installed directories. This can
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
248 ## be used in cases where the package database has been corrupted.
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
249 ## It can also take the @option{-auto} and @option{-noauto} options to allow the
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
250 ## autoloading state of a package to be changed. For example,
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
251 ##
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
252 ## @example
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
253 ## pkg rebuild -noauto image
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
254 ## @end example
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
255 ##
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
256 ## @noindent
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
257 ## will remove the autoloading status of the image package.
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
258 ##
6032
dcecca0396e6 [project @ 2006-10-04 17:35:15 by jwe]
jwe
parents: 6025
diff changeset
259 ## @end table
11547
e1851653d59c Eliminate @deffn macros.
Rik <octave@nomad.inbox5.com>
parents: 11523
diff changeset
260 ## @end deftypefn
5947
009fa69b6182 [project @ 2006-08-21 16:15:20 by jwe]
jwe
parents: 5928
diff changeset
261
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
262 function [local_packages, global_packages] = pkg (varargin)
8202
cf59d542f33e replace all TODOs and XXXs with FIXMEs
Jaroslav Hajek <highegg@gmail.com>
parents: 8174
diff changeset
263 ## Installation prefix (FIXME: what should these be on windows?)
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
264 persistent user_prefix = false;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
265 persistent prefix = -1;
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
266 persistent archprefix = -1;
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
267 persistent local_list = tilde_expand (fullfile ("~", ".octave_packages"));
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
268 persistent global_list = fullfile (OCTAVE_HOME (), "share", "octave",
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
269 "octave_packages");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
270 mlock ();
6189
0d23b0c0ce1a [project @ 2006-11-29 21:01:05 by dbateman]
dbateman
parents: 6143
diff changeset
271
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
272 global_install = issuperuser ();
6683
a2f697dca2a4 [project @ 2007-06-01 23:10:24 by dbateman]
dbateman
parents: 6675
diff changeset
273
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
274 if (prefix == -1)
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
275 if (global_install)
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
276 prefix = fullfile (OCTAVE_HOME (), "share", "octave", "packages");
12710
762d10c77277 maint: use libdir for .oct files, not libexecdir
John W. Eaton <jwe@octave.org>
parents: 12642
diff changeset
277 archprefix = fullfile (octave_config_info ("libdir"),
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
278 "octave", "packages");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
279 else
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
280 prefix = fullfile ("~", "octave");
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
281 archprefix = prefix;
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
282 endif
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
283 prefix = tilde_expand (prefix);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
284 archprefix = tilde_expand (archprefix);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
285 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
286
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
287 available_actions = {"list", "install", "uninstall", "load", ...
12779
095fd5c8b7e1 doc: Update docstring for pkg()
Rik <octave@nomad.inbox5.com>
parents: 12778
diff changeset
288 "unload", "prefix", "local_list", ...
12778
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
289 "global_list", "rebuild", "build", ...
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
290 "describe", "update"};
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
291 ## Handle input
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
292 if (length (varargin) == 0 || ! iscellstr (varargin))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
293 print_usage ();
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
294 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
295 files = {};
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
296 deps = true;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
297 auto = 0;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
298 action = "none";
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
299 verbose = false;
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
300 octave_forge = false;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
301 for i = 1:length (varargin)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
302 switch (varargin{i})
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
303 case "-nodeps"
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
304 deps = false;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
305 case "-noauto"
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
306 auto = -1;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
307 case "-auto"
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
308 auto = 1;
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
309 case "-verbose"
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
310 verbose = true;
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
311 case "-forge"
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
312 octave_forge = true;
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
313 case "-local"
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
314 global_install = false;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
315 if (! user_prefix)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
316 prefix = tilde_expand (fullfile ("~", "octave"));
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
317 archprefix = prefix;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
318 endif
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
319 case "-global"
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
320 global_install = true;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
321 if (! user_prefix)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
322 prefix = fullfile (OCTAVE_HOME (), "share", "octave", "packages");
12710
762d10c77277 maint: use libdir for .oct files, not libexecdir
John W. Eaton <jwe@octave.org>
parents: 12642
diff changeset
323 archprefix = fullfile (octave_config_info ("libdir"),
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
324 "octave", "packages");
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
325 endif
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
326 case available_actions
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
327 if (strcmp (action, "none"))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
328 action = varargin{i};
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
329 else
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
330 error ("more than one action specified");
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
331 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
332 otherwise
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
333 files{end+1} = varargin{i};
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
334 endswitch
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
335 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
336
10685
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
337 if (octave_forge && ! any (strcmp (action, {"install", "list"})))
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
338 error ("-forge can only be used with install or list");
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
339 endif
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
340
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
341 ## Take action
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
342 switch (action)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
343 case "list"
10685
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
344 if (octave_forge)
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
345 if (nargout > 0)
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
346 local_packages = list_forge_packages ();
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
347 else
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
348 list_forge_packages ();
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
349 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
350 else
10685
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
351 if (nargout == 0)
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
352 installed_packages (local_list, global_list);
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
353 elseif (nargout == 1)
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
354 local_packages = installed_packages (local_list, global_list);
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
355 elseif (nargout == 2)
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
356 [local_packages, global_packages] = installed_packages (local_list,
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
357 global_list);
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
358 else
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
359 error ("too many output arguments requested");
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
360 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
361 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
362
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
363 case "install"
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
364 if (length (files) == 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
365 error ("you must specify at least one filename when calling 'pkg install'");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
366 endif
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
367
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
368 local_files = {};
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
369 unwind_protect
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
370
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
371 if (octave_forge)
12931
cefd568ea073 Replace function handles with function names in cellfun calls for 15% speedup.
Rik <octave@nomad.inbox5.com>
parents: 12779
diff changeset
372 [urls, local_files] = cellfun ("get_forge_download", files, "uniformoutput", false);
cefd568ea073 Replace function handles with function names in cellfun calls for 15% speedup.
Rik <octave@nomad.inbox5.com>
parents: 12779
diff changeset
373 [files, succ] = cellfun ("urlwrite", urls, local_files, "uniformoutput", false);
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
374 succ = [succ{:}];
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
375 if (! all (succ))
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
376 i = find (! succ, 1);
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
377 error ("could not download file %s from url %s", local_files{i}, urls{i});
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
378 endif
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
379 endif
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
380
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
381 install (files, deps, auto, prefix, archprefix, verbose, local_list,
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
382 global_list, global_install);
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
383
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
384 unwind_protect_cleanup
12931
cefd568ea073 Replace function handles with function names in cellfun calls for 15% speedup.
Rik <octave@nomad.inbox5.com>
parents: 12779
diff changeset
385 cellfun ("unlink", local_files);
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
386 end_unwind_protect
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
387
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
388 case "uninstall"
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
389 if (length (files) == 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
390 error ("you must specify at least one package when calling 'pkg uninstall'");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
391 endif
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
392 uninstall (files, deps, verbose, local_list,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
393 global_list, global_install);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
394
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
395 case "load"
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
396 if (length (files) == 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
397 error ("you must specify at least one package, 'all' or 'auto' when calling 'pkg load'");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
398 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
399 load_packages (files, deps, local_list, global_list);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
400
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
401 case "unload"
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
402 if (length (files) == 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
403 error ("you must specify at least one package or 'all' when calling 'pkg unload'");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
404 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
405 unload_packages (files, deps, local_list, global_list);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
406
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
407 case "prefix"
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
408 if (length (files) == 0 && nargout == 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
409 printf ("Installation prefix: %s\n", prefix);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
410 printf ("Architecture dependent prefix: %s\n", archprefix);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
411 elseif (length (files) == 0 && nargout >= 1)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
412 local_packages = prefix;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
413 global_packages = archprefix;
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
414 elseif (length (files) >= 1 && nargout <= 2 && ischar (files{1}))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
415 prefix = files{1};
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
416 prefix = absolute_pathname (prefix);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
417 local_packages = prefix;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
418 user_prefix = true;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
419 if (length (files) >= 2 && ischar (files{2}))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
420 archprefix = files{2};
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
421 try
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
422 archprefix = absolute_pathname (archprefix);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
423 catch
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
424 mkdir (archprefix);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
425 warning ("creating the directory %s\n", archprefix);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
426 archprefix = absolute_pathname (archprefix);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
427 end_try_catch
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
428 global_packages = archprefix;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
429 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
430 else
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
431 error ("you must specify a prefix directory, or request an output argument");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
432 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
433
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
434 case "local_list"
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
435 if (length (files) == 0 && nargout == 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
436 disp (local_list);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
437 elseif (length (files) == 0 && nargout == 1)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
438 local_packages = local_list;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
439 elseif (length (files) == 1 && nargout == 0 && ischar (files{1}))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
440 try
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
441 local_list = absolute_pathname (files{1});
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
442 catch
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
443 ## Force file to be created
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
444 fclose (fopen (files{1}, "wt"));
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
445 local_list = absolute_pathname (files{1});
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
446 end_try_catch
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
447 else
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
448 error ("you must specify a local_list file, or request an output argument");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
449 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
450
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
451 case "global_list"
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
452 if (length (files) == 0 && nargout == 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
453 disp(global_list);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
454 elseif (length (files) == 0 && nargout == 1)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
455 local_packages = global_list;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
456 elseif (length (files) == 1 && nargout == 0 && ischar (files{1}))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
457 try
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
458 global_list = absolute_pathname (files{1});
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
459 catch
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
460 ## Force file to be created
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
461 fclose (fopen (files{1}, "wt"));
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
462 global_list = absolute_pathname (files{1});
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
463 end_try_catch
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
464 else
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
465 error ("you must specify a global_list file, or request an output argument");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
466 endif
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
467
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
468 case "rebuild"
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
469 if (global_install)
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
470 global_packages = rebuild (prefix, archprefix, global_list, files,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
471 auto, verbose);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
472 global_packages = save_order (global_packages);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
473 save (global_list, "global_packages");
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
474 if (nargout > 0)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
475 local_packages = global_packages;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
476 endif
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
477 else
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
478 local_packages = rebuild (prefix, archprefix, local_list, files, auto,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
479 verbose);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
480 local_packages = save_order (local_packages);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
481 save (local_list, "local_packages");
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
482 if (nargout == 0)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
483 clear ("local_packages");
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
484 endif
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
485 endif
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
486
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
487 case "build"
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
488 if (length (files) < 2)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
489 error ("you must specify at least the build directory and one filename\nwhen calling 'pkg build'");
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
490 endif
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
491 build (files, deps, auto, verbose);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
492
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
493 case "describe"
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
494 if (length (files) == 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
495 error ("you must specify at least one package or 'all' when calling 'pkg describe'");
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
496 endif
8202
cf59d542f33e replace all TODOs and XXXs with FIXMEs
Jaroslav Hajek <highegg@gmail.com>
parents: 8174
diff changeset
497 ## FIXME: the name of the output variables is inconsistent
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
498 ## with their content
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
499 switch (nargout)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
500 case 0
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
501 describe (files, verbose, local_list, global_list);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
502 case 1
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
503 pkg_desc_list = describe (files, verbose, local_list, ...
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
504 global_list);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
505 local_packages = pkg_desc_list;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
506 case 2
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
507 [pkg_desc_list, flag] = describe (files, verbose, local_list, ...
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
508 global_list);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
509 local_packages = pkg_desc_list;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
510 global_packages = flag;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
511 otherwise
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
512 error ("you can request at most two outputs when calling 'pkg describe'");
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
513 endswitch
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
514
12778
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
515 case "update"
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
516 if (nargout == 0)
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
517 installed_pkgs_lst = installed_packages (local_list, global_list);
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
518 for i = 1:length (installed_pkgs_lst)
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
519 installed_pkg_name = installed_pkgs_lst{i}.name;
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
520 installed_pkg_version = installed_pkgs_lst{i}.version;
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
521 forge_pkg_version = get_forge_pkg (installed_pkg_name);
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
522 if (compare_versions (forge_pkg_version, installed_pkg_version, ">"))
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
523 feval (@pkg, "install", "-forge", installed_pkg_name);
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
524 endif
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
525 endfor
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
526 else
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
527 error ("no output arguments available");
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
528 endif
0ca5672d5f1a Implement pkg update command
Lukas Reichlin <lukas.reichlin@gmail.com>
parents: 12710
diff changeset
529
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
530 otherwise
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
531 error ("you must specify a valid action for 'pkg'. See 'help pkg' for details");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
532 endswitch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
533 endfunction
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
534
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
535 function descriptions = rebuild (prefix, archprefix, list, files, auto, verbose)
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
536 if (isempty (files))
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
537 [dirlist, err, msg] = readdir (prefix);
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
538 if (err)
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
539 error ("couldn't read directory %s: %s", prefix, msg);
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
540 endif
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
541 ## the two first entries of dirlist are "." and ".."
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
542 dirlist([1,2]) = [];
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
543 else
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
544 old_descriptions = installed_packages (list, list);
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
545 wd = pwd ();
6663
f4938870a0a7 [project @ 2007-05-24 10:26:21 by dbateman]
dbateman
parents: 6655
diff changeset
546 unwind_protect
f4938870a0a7 [project @ 2007-05-24 10:26:21 by dbateman]
dbateman
parents: 6655
diff changeset
547 cd (prefix);
11191
01ddaedd6ad5 Reverse changeset b1f4bdc276b6. Use all lower case for "uniformoutput" option.
Rik <octave@nomad.inbox5.com>
parents: 11190
diff changeset
548 dirlist = glob (cellfun(@(x) cstrcat(x, '-*'), files, 'uniformoutput', 0));
6663
f4938870a0a7 [project @ 2007-05-24 10:26:21 by dbateman]
dbateman
parents: 6655
diff changeset
549 unwind_protect_cleanup
f4938870a0a7 [project @ 2007-05-24 10:26:21 by dbateman]
dbateman
parents: 6655
diff changeset
550 cd (wd);
f4938870a0a7 [project @ 2007-05-24 10:26:21 by dbateman]
dbateman
parents: 6655
diff changeset
551 end_unwind_protect
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
552 endif
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
553 descriptions = {};
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
554 for k = 1:length (dirlist)
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
555 descfile = fullfile (prefix, dirlist{k}, "packinfo", "DESCRIPTION");
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
556 if (verbose)
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
557 printf ("recreating package description from %s\n", dirlist{k});
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
558 endif
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
559 if (exist (descfile, "file"))
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
560 desc = get_description (descfile);
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
561 desc.dir = fullfile (prefix, dirlist{k});
7540
3422f39573b1 strcat.m: Matlab compatibility, with cstrcat.m replacing conventional strcat.m.
Ben Abbott <bpabbott@mac.com>
parents: 7498
diff changeset
562 desc.archprefix = fullfile (archprefix, cstrcat (desc.name, "-",
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
563 desc.version));
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
564 if (auto != 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
565 if (exist (fullfile (desc.dir, "packinfo", ".autoload"), "file"))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
566 unlink (fullfile (desc.dir, "packinfo", ".autoload"));
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
567 endif
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
568 if (auto < 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
569 desc.autoload = 0;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
570 elseif (auto > 0)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
571 desc.autoload = 1;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
572 fclose (fopen (fullfile (desc.dir, "packinfo", ".autoload"), "wt"));
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
573 endif
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
574 else
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
575 if (exist (fullfile (desc.dir, "packinfo", ".autoload"), "file"))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
576 desc.autoload = 1;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
577 else
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
578 desc.autoload = 0;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
579 endif
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
580 endif
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
581 descriptions{end + 1} = desc;
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
582 elseif (verbose)
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
583 warning ("directory %s is not a valid package", dirlist{k});
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
584 endif
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
585 endfor
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
586
6663
f4938870a0a7 [project @ 2007-05-24 10:26:21 by dbateman]
dbateman
parents: 6655
diff changeset
587 if (! isempty (files))
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
588 ## We are rebuilding for a particular package(s) so we should take
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
589 ## care to keep the other untouched packages in the descriptions
6663
f4938870a0a7 [project @ 2007-05-24 10:26:21 by dbateman]
dbateman
parents: 6655
diff changeset
590 descriptions = {descriptions{:}, old_descriptions{:}};
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
591
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
592 dup = [];
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
593 for i = 1:length (descriptions)
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
594 if (find (dup, i))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
595 continue;
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
596 endif
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
597 for j = (i+1):length (descriptions)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
598 if (find (dup, j))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
599 continue;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
600 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
601 if (strcmp (descriptions{i}.name, descriptions{j}.name))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
602 dup = [dup, j];
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
603 endif
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
604 endfor
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
605 endfor
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
606 if (! isempty (dup))
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
607 descriptions (dup) = [];
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
608 endif
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
609 endif
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
610 endfunction
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
611
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
612 function build (files, handle_deps, autoload, verbose)
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
613 if (length (files) < 1)
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
614 error ("insufficient number of files");
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
615 endif
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
616 builddir = files{1};
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
617 if (! exist (builddir, "dir"))
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
618 warning ("creating build directory %s", builddir);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
619 [status, msg] = mkdir (builddir);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
620 if (status != 1)
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
621 error ("could not create installation directory: %s", msg);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
622 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
623 endif
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
624 builddir = absolute_pathname (builddir);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
625 installdir = fullfile (builddir, "install");
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
626 if (! exist (installdir, "dir"))
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
627 [status, msg] = mkdir (installdir);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
628 if (status != 1)
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
629 error ("could not create installation directory: %s", msg);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
630 endif
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
631 endif
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
632 files(1) = [];
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
633 buildlist = fullfile (builddir, "octave_packages");
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
634 install (files, handle_deps, autoload, installdir, installdir, verbose,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
635 buildlist, "", false);
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
636 unwind_protect
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
637 repackage (builddir, buildlist);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
638 unwind_protect_cleanup
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
639 unload_packages ({"all"}, handle_deps, buildlist, "");
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
640 if (exist (installdir, "dir"))
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
641 rm_rf (installdir);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
642 endif
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
643 if (exist (buildlist, "file"))
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
644 unlink (buildlist);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
645 endif
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
646 end_unwind_protect
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
647 endfunction
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
648
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
649 function install (files, handle_deps, autoload, prefix, archprefix, verbose,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
650 local_list, global_list, global_install)
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
651
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
652 ## Check that the directory in prefix exist. If it doesn't: create it!
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
653 if (! exist (prefix, "dir"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
654 warning ("creating installation directory %s", prefix);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
655 [status, msg] = mkdir (prefix);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
656 if (status != 1)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
657 error ("could not create installation directory: %s", msg);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
658 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
659 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
660
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
661 ## Get the list of installed packages.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
662 [local_packages, global_packages] = installed_packages (local_list,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
663 global_list);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
664
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
665 installed_pkgs_lst = {local_packages{:}, global_packages{:}};
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
666
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
667 if (global_install)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
668 packages = global_packages;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
669 else
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
670 packages = local_packages;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
671 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
672
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
673 ## Uncompress the packages and read the DESCRIPTION files.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
674 tmpdirs = packdirs = descriptions = {};
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
675 try
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
676 ## Warn about non existent files.
6683
a2f697dca2a4 [project @ 2007-06-01 23:10:24 by dbateman]
dbateman
parents: 6675
diff changeset
677 for i = 1:length (files)
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
678 if (isempty (glob(files{i})))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
679 warning ("file %s does not exist", files{i});
6683
a2f697dca2a4 [project @ 2007-06-01 23:10:24 by dbateman]
dbateman
parents: 6675
diff changeset
680 endif
a2f697dca2a4 [project @ 2007-06-01 23:10:24 by dbateman]
dbateman
parents: 6675
diff changeset
681 endfor
a2f697dca2a4 [project @ 2007-06-01 23:10:24 by dbateman]
dbateman
parents: 6675
diff changeset
682
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
683 ## Unpack the package files and read the DESCRIPTION files.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
684 files = glob (files);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
685 packages_to_uninstall = [];
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
686 for i = 1:length (files)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
687 tgz = files{i};
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
688
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
689 if (exist (tgz, "file"))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
690 ## Create a temporary directory.
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
691 tmpdir = tmpnam ();
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
692 tmpdirs{end+1} = tmpdir;
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
693 if (verbose)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
694 printf ("mkdir (%s)\n", tmpdir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
695 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
696 [status, msg] = mkdir (tmpdir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
697 if (status != 1)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
698 error ("couldn't create temporary directory: %s", msg);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
699 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
700
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
701 ## Uncompress the package.
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
702 if (verbose)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
703 printf ("untar (%s, %s)\n", tgz, tmpdir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
704 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
705 untar (tgz, tmpdir);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
706
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
707 ## Get the name of the directories produced by tar.
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
708 [dirlist, err, msg] = readdir (tmpdir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
709 if (err)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
710 error ("couldn't read directory produced by tar: %s", msg);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
711 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
712
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
713 if (length (dirlist) > 3)
11589
b0084095098e missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents: 11588
diff changeset
714 error ("bundles of packages are not allowed");
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
715 endif
7632
d6e63a15cc75 Allow installation of already extracted packages
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 7548
diff changeset
716 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
717
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
718 ## The filename pointed to an uncompressed package to begin with.
7632
d6e63a15cc75 Allow installation of already extracted packages
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 7548
diff changeset
719 if (exist (tgz, "dir"))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
720 dirlist = {".", "..", tgz};
7632
d6e63a15cc75 Allow installation of already extracted packages
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 7548
diff changeset
721 endif
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
722
7632
d6e63a15cc75 Allow installation of already extracted packages
Thomas Weber <thomas.weber.mail@gmail.com>
parents: 7548
diff changeset
723 if (exist (tgz, "file") || exist (tgz, "dir"))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
724 ## The two first entries of dirlist are "." and "..".
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
725 if (exist (tgz, "file"))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
726 packdir = fullfile (tmpdir, dirlist{3});
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
727 else
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
728 packdir = fullfile (pwd(), dirlist{3});
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
729 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
730 packdirs{end+1} = packdir;
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
731
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
732 ## Make sure the package contains necessary files.
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
733 verify_directory (packdir);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
734
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
735 ## Read the DESCRIPTION file.
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
736 filename = fullfile (packdir, "DESCRIPTION");
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
737 desc = get_description (filename);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
738
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
739 ## Verify that package name corresponds with filename.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
740 [dummy, nm] = fileparts (tgz);
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
741 if ((length (nm) >= length (desc.name))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
742 && ! strcmp (desc.name, nm(1:length(desc.name))))
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
743 error ("package name '%s' doesn't correspond to its filename '%s'",
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
744 desc.name, nm);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
745 endif
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
746
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
747 ## Set default installation directory.
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
748 desc.dir = fullfile (prefix, cstrcat (desc.name, "-", desc.version));
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
749
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
750 ## Set default architectire dependent installation directory.
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
751 desc.archprefix = fullfile (archprefix, cstrcat (desc.name, "-",
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
752 desc.version));
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
753
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
754 ## Save desc.
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
755 descriptions{end+1} = desc;
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
756
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
757 ## Are any of the new packages already installed?
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
758 ## If so we'll remove the old version.
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
759 for j = 1:length (packages)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
760 if (strcmp (packages{j}.name, desc.name))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
761 packages_to_uninstall(end+1) = j;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
762 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
763 endfor
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
764 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
765 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
766 catch
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
767 ## Something went wrong, delete tmpdirs.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
768 for i = 1:length (tmpdirs)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
769 rm_rf (tmpdirs{i});
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
770 endfor
6655
8dda89ca38f6 [project @ 2007-05-22 19:25:29 by jwe]
jwe
parents: 6645
diff changeset
771 rethrow (lasterror ());
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
772 end_try_catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
773
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
774 ## Check dependencies.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
775 if (handle_deps)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
776 ok = true;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
777 error_text = "";
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
778 for i = 1:length (descriptions)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
779 desc = descriptions{i};
10196
69bb6e1e10d2 complement->setdiff in pkg.m
Jaroslav Hajek <highegg@gmail.com>
parents: 9724
diff changeset
780 idx2 = setdiff (1:length(descriptions), i);
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
781 if (global_install)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
782 ## Global installation is not allowed to have dependencies on locally
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
783 ## installed packages.
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
784 idx1 = setdiff (1:length(global_packages), packages_to_uninstall);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
785 pseudo_installed_packages = {global_packages{idx1}, ...
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
786 descriptions{idx2}};
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
787 else
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
788 idx1 = setdiff (1:length(local_packages), packages_to_uninstall);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
789 pseudo_installed_packages = {local_packages{idx1}, ...
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
790 global_packages{:}, ...
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
791 descriptions{idx2}};
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
792 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
793 bad_deps = get_unsatisfied_deps (desc, pseudo_installed_packages);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
794 ## Are there any unsatisfied dependencies?
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
795 if (! isempty (bad_deps))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
796 ok = false;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
797 for i = 1:length (bad_deps)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
798 dep = bad_deps{i};
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
799 error_text = cstrcat (error_text, " ", desc.name, " needs ",
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
800 dep.package, " ", dep.operator, " ",
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
801 dep.version, "\n");
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
802 endfor
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
803 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
804 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
805
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
806 ## Did we find any unsatisfied dependencies?
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
807 if (! ok)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
808 error ("the following dependencies where unsatisfied:\n %s", error_text);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
809 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
810 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
811
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
812 ## Prepare each package for installation.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
813 try
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
814 for i = 1:length (descriptions)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
815 desc = descriptions{i};
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
816 pdir = packdirs{i};
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
817 prepare_installation (desc, pdir);
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
818 configure_make (desc, pdir, verbose);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
819 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
820 catch
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
821 ## Something went wrong, delete tmpdirs.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
822 for i = 1:length (tmpdirs)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
823 rm_rf (tmpdirs{i});
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
824 endfor
6655
8dda89ca38f6 [project @ 2007-05-22 19:25:29 by jwe]
jwe
parents: 6645
diff changeset
825 rethrow (lasterror ());
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
826 end_try_catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
827
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
828 ## Uninstall the packages that will be replaced.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
829 try
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
830 for i = packages_to_uninstall
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
831 if (global_install)
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
832 uninstall ({global_packages{i}.name}, false, verbose, local_list,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
833 global_list, global_install);
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
834 else
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
835 uninstall ({local_packages{i}.name}, false, verbose, local_list,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
836 global_list, global_install);
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
837 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
838 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
839 catch
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
840 ## Something went wrong, delete tmpdirs.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
841 for i = 1:length (tmpdirs)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
842 rm_rf (tmpdirs{i});
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
843 endfor
6655
8dda89ca38f6 [project @ 2007-05-22 19:25:29 by jwe]
jwe
parents: 6645
diff changeset
844 rethrow (lasterror ());
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
845 end_try_catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
846
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
847 ## Install each package.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
848 try
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
849 for i = 1:length (descriptions)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
850 desc = descriptions{i};
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
851 pdir = packdirs{i};
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
852 copy_files (desc, pdir, global_install);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
853 create_pkgadddel (desc, pdir, "PKG_ADD", global_install);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
854 create_pkgadddel (desc, pdir, "PKG_DEL", global_install);
8575
f134925a1cfa m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents: 8507
diff changeset
855 finish_installation (desc, pdir, global_install);
f134925a1cfa m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents: 8507
diff changeset
856 generate_lookfor_cache (desc);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
857 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
858 catch
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
859 ## Something went wrong, delete tmpdirs.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
860 for i = 1:length (tmpdirs)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
861 rm_rf (tmpdirs{i});
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
862 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
863 for i = 1:length (descriptions)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
864 rm_rf (descriptions{i}.dir);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
865 rm_rf (getarchdir (descriptions{i}));
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
866 endfor
6655
8dda89ca38f6 [project @ 2007-05-22 19:25:29 by jwe]
jwe
parents: 6645
diff changeset
867 rethrow (lasterror ());
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
868 end_try_catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
869
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
870 ## Check if the installed directory is empty. If it is remove it
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
871 ## from the list.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
872 for i = length (descriptions):-1:1
11149
fe3c3dfc07eb style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
873 if (dirempty (descriptions{i}.dir, {"packinfo", "doc"})
fe3c3dfc07eb style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
874 && dirempty (getarchdir (descriptions{i})))
6655
8dda89ca38f6 [project @ 2007-05-22 19:25:29 by jwe]
jwe
parents: 6645
diff changeset
875 warning ("package %s is empty\n", descriptions{i}.name);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
876 rm_rf (descriptions{i}.dir);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
877 rm_rf (getarchdir (descriptions{i}));
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
878 descriptions(i) = [];
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
879 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
880 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
881
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
882 ## If the package requested that it is autoloaded, or the installer
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
883 ## requested that it is, then mark the package as autoloaded.
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
884 for i = length (descriptions):-1:1
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
885 if (autoload > 0 || (autoload == 0 && isautoload (descriptions(i))))
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
886 fclose (fopen (fullfile (descriptions{i}.dir, "packinfo",
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
887 ".autoload"), "wt"));
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
888 descriptions{i}.autoload = 1;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
889 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
890 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
891
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
892 ## Add the packages to the package list.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
893 try
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
894 if (global_install)
10196
69bb6e1e10d2 complement->setdiff in pkg.m
Jaroslav Hajek <highegg@gmail.com>
parents: 9724
diff changeset
895 idx = setdiff (1:length(global_packages), packages_to_uninstall);
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
896 global_packages = save_order ({global_packages{idx}, descriptions{:}});
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
897 save (global_list, "global_packages");
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
898 installed_pkgs_lst = {local_packages{:}, global_packages{:}};
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
899 else
10196
69bb6e1e10d2 complement->setdiff in pkg.m
Jaroslav Hajek <highegg@gmail.com>
parents: 9724
diff changeset
900 idx = setdiff (1:length(local_packages), packages_to_uninstall);
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
901 local_packages = save_order ({local_packages{idx}, descriptions{:}});
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
902 save (local_list, "local_packages");
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
903 installed_pkgs_lst = {local_packages{:}, global_packages{:}};
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
904 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
905 catch
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
906 ## Something went wrong, delete tmpdirs.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
907 for i = 1:length (tmpdirs)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
908 rm_rf (tmpdirs{i});
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
909 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
910 for i = 1:length (descriptions)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
911 rm_rf (descriptions{i}.dir);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
912 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
913 if (global_install)
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
914 printf ("error: couldn't append to %s\n", global_list);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
915 else
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
916 printf ("error: couldn't append to %s\n", local_list);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
917 endif
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
918 rethrow (lasterror ());
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
919 end_try_catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
920
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
921 ## All is well, let's clean up.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
922 for i = 1:length (tmpdirs)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
923 [status, msg] = rm_rf (tmpdirs{i});
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
924 if (status != 1)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
925 warning ("couldn't clean up after my self: %s\n", msg);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
926 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
927 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
928
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
929 ## Add the newly installed packages to the path, so the user
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
930 ## can begin using them. Only load them if they are marked autoload.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
931 if (length (descriptions) > 0)
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
932 idx = [];
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
933 for i = 1:length (descriptions)
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
934 if (isautoload (descriptions(i)))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
935 nm = descriptions{i}.name;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
936 for j = 1:length (installed_pkgs_lst)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
937 if (strcmp (nm, installed_pkgs_lst{j}.name))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
938 idx (end + 1) = j;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
939 break;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
940 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
941 endfor
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
942 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
943 endfor
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
944 load_packages_and_dependencies (idx, handle_deps, installed_pkgs_lst,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
945 global_install);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
946 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
947 endfunction
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
948
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
949 function uninstall (pkgnames, handle_deps, verbose, local_list,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
950 global_list, global_install)
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
951 ## Get the list of installed packages.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
952 [local_packages, global_packages] = installed_packages(local_list,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
953 global_list);
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
954 if (global_install)
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
955 installed_pkgs_lst = {local_packages{:}, global_packages{:}};
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
956 else
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
957 installed_pkgs_lst = local_packages;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
958 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
959
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
960 num_packages = length (installed_pkgs_lst);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
961 delete_idx = [];
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
962 for i = 1:num_packages
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
963 cur_name = installed_pkgs_lst{i}.name;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
964 if (any (strcmp (cur_name, pkgnames)))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
965 delete_idx(end+1) = i;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
966 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
967 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
968
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
969 ## Are all the packages that should be uninstalled already installed?
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
970 if (length (delete_idx) != length (pkgnames))
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
971 if (global_install)
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
972 ## Try again for a locally installed package.
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
973 installed_pkgs_lst = local_packages;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
974
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
975 num_packages = length (installed_pkgs_lst);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
976 delete_idx = [];
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
977 for i = 1:num_packages
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
978 cur_name = installed_pkgs_lst{i}.name;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
979 if (any (strcmp (cur_name, pkgnames)))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
980 delete_idx(end+1) = i;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
981 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
982 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
983 if (length (delete_idx) != length (pkgnames))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
984 ## FIXME: We should have a better error message.
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
985 warning ("some of the packages you want to uninstall are not installed");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
986 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
987 else
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
988 ## FIXME: We should have a better error message.
8664
e07e93c04080 style fixes
John W. Eaton <jwe@octave.org>
parents: 8575
diff changeset
989 warning ("some of the packages you want to uninstall are not installed");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
990 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
991 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
992
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
993 ## Compute the packages that will remain installed.
10196
69bb6e1e10d2 complement->setdiff in pkg.m
Jaroslav Hajek <highegg@gmail.com>
parents: 9724
diff changeset
994 idx = setdiff (1:num_packages, delete_idx);
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
995 remaining_packages = {installed_pkgs_lst{idx}};
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
996
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
997 ## Check dependencies.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
998 if (handle_deps)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
999 error_text = "";
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1000 for i = 1:length (remaining_packages)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1001 desc = remaining_packages{i};
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1002 bad_deps = get_unsatisfied_deps (desc, remaining_packages);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1003
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1004 ## Will the uninstallation break any dependencies?
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1005 if (! isempty (bad_deps))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1006 for i = 1:length (bad_deps)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1007 dep = bad_deps{i};
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1008 error_text = cstrcat (error_text, " ", desc.name, " needs ",
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1009 dep.package, " ", dep.operator, " ",
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1010 dep.version, "\n");
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1011 endfor
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1012 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1013 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1014
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1015 if (! isempty (error_text))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1016 error ("the following dependencies where unsatisfied:\n %s", error_text);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1017 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1018 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1019
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1020 ## Delete the directories containing the packages.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1021 for i = delete_idx
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
1022 desc = installed_pkgs_lst{i};
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1023 ## If an 'on_uninstall.m' exist, call it!
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1024 if (exist (fullfile (desc.dir, "packinfo", "on_uninstall.m"), "file"))
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
1025 wd = pwd ();
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1026 cd (fullfile (desc.dir, "packinfo"));
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
1027 on_uninstall (desc);
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
1028 cd (wd);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1029 endif
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1030 ## Do the actual deletion.
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1031 if (desc.loaded)
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1032 rmpath (desc.dir);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1033 if (exist (getarchdir (desc)))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1034 rmpath (getarchdir (desc));
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1035 endif
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
1036 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1037 if (exist (desc.dir, "dir"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1038 [status, msg] = rm_rf (desc.dir);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1039 if (status != 1)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1040 error ("couldn't delete directory %s: %s", desc.dir, msg);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1041 endif
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1042 [status, msg] = rm_rf (getarchdir (desc));
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1043 if (status != 1)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1044 error ("couldn't delete directory %s: %s", getarchdir (desc), msg);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1045 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1046 if (dirempty (desc.archprefix))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1047 rm_rf (desc.archprefix);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1048 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1049 else
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1050 warning ("directory %s previously lost", desc.dir);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1051 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1052 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1053
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1054 ## Write a new ~/.octave_packages.
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
1055 if (global_install)
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1056 if (length (remaining_packages) == 0)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1057 unlink (global_list);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1058 else
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
1059 global_packages = save_order (remaining_packages);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1060 save (global_list, "global_packages");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1061 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1062 else
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1063 if (length (remaining_packages) == 0)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1064 unlink (local_list);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1065 else
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
1066 local_packages = save_order (remaining_packages);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1067 save (local_list, "local_packages");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1068 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1069 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1070
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1071 endfunction
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1072
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1073 function [pkg_desc_list, flag] = describe (pkgnames, verbose,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1074 local_list, global_list)
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1075
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1076 ## Get the list of installed packages.
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1077 installed_pkgs_lst = installed_packages(local_list, global_list);
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1078 num_packages = length (installed_pkgs_lst);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1079
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1080
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1081 describe_all = false;
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1082 if (any (strcmp ("all", pkgnames)))
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1083 describe_all = true;
8455
fd11a08a9b31 disallow invalid {}-indexed assigments
Jaroslav Hajek <highegg@gmail.com>
parents: 8202
diff changeset
1084 flag(1:num_packages) = {"Not Loaded"};
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1085 num_pkgnames = num_packages;
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1086 else
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1087 num_pkgnames = length (pkgnames);
8455
fd11a08a9b31 disallow invalid {}-indexed assigments
Jaroslav Hajek <highegg@gmail.com>
parents: 8202
diff changeset
1088 flag(1:num_pkgnames) = {"Not installed"};
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1089 endif
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1090
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1091 for i = 1:num_packages
8507
cadc73247d65 style fixes
John W. Eaton <jwe@octave.org>
parents: 8506
diff changeset
1092 curr_name = installed_pkgs_lst{i}.name;
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1093 if (describe_all)
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1094 name_pos = i;
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1095 else
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1096 name_pos = find(strcmp (curr_name, pkgnames));
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1097 endif
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1098
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1099 if (! isempty (name_pos))
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1100 if (installed_pkgs_lst{i}.loaded)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1101 flag{name_pos} = "Loaded";
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1102 else
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1103 flag{name_pos} = "Not loaded";
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1104 endif
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1105
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1106 pkg_desc_list{name_pos}.name = installed_pkgs_lst{i}.name;
9258
a653c61ee98c let pkg describe return version information
Carlo de Falco <kingcrimson@tiscali.it>
parents: 9220
diff changeset
1107 pkg_desc_list{name_pos}.version = installed_pkgs_lst{i}.version;
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1108 pkg_desc_list{name_pos}.description = installed_pkgs_lst{i}.description;
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1109 pkg_desc_list{name_pos}.provides = parse_pkg_idx (installed_pkgs_lst{i}.dir);
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1110
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1111 endif
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1112 endfor
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1113
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1114 non_inst = find (strcmp (flag, "Not installed"));
9220
70177bf9cc16 Fix bug when calling pkg describe to check whether a package is installed
Carlo de Falco <kingcrimson@tiscali.it>
parents: 9153
diff changeset
1115 if (! isempty (non_inst))
70177bf9cc16 Fix bug when calling pkg describe to check whether a package is installed
Carlo de Falco <kingcrimson@tiscali.it>
parents: 9153
diff changeset
1116 if (nargout < 2)
70177bf9cc16 Fix bug when calling pkg describe to check whether a package is installed
Carlo de Falco <kingcrimson@tiscali.it>
parents: 9153
diff changeset
1117 non_inst_str = sprintf (" %s ", pkgnames{non_inst});
70177bf9cc16 Fix bug when calling pkg describe to check whether a package is installed
Carlo de Falco <kingcrimson@tiscali.it>
parents: 9153
diff changeset
1118 error ("some packages are not installed: %s", non_inst_str);
70177bf9cc16 Fix bug when calling pkg describe to check whether a package is installed
Carlo de Falco <kingcrimson@tiscali.it>
parents: 9153
diff changeset
1119 else
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1120 pkg_desc_list{non_inst} = struct ("name", {}, "description",
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1121 {}, "provides", {});
9220
70177bf9cc16 Fix bug when calling pkg describe to check whether a package is installed
Carlo de Falco <kingcrimson@tiscali.it>
parents: 9153
diff changeset
1122 endif
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1123 endif
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1124
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1125 if (nargout == 0)
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1126 for i = 1:num_pkgnames
9258
a653c61ee98c let pkg describe return version information
Carlo de Falco <kingcrimson@tiscali.it>
parents: 9220
diff changeset
1127 print_package_description (pkg_desc_list{i}.name,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1128 pkg_desc_list{i}.version,
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1129 pkg_desc_list{i}.provides,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1130 pkg_desc_list{i}.description,
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1131 flag{i}, verbose);
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1132 endfor
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1133 endif
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1134
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1135 endfunction
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1136
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1137 ## AUXILIARY FUNCTIONS
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1138
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1139 ## Read an INDEX file.
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1140 function [pkg_idx_struct] = parse_pkg_idx (packdir)
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1141
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1142 index_file = fullfile (packdir, "packinfo", "INDEX");
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1143
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1144 if (! exist (index_file, "file"))
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1145 error ("could not find any INDEX file in directory %s, try 'pkg rebuild all' to generate missing INDEX files", packdir);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1146 endif
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1147
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1148
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1149 [fid, msg] = fopen (index_file, "r");
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1150 if (fid == -1)
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1151 error ("the INDEX file %s could not be read: %s",
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1152 index_file, msg);
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1153 endif
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1154
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1155 cat_num = 1;
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1156 pkg_idx_struct{1}.category = "Uncategorized";
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1157 pkg_idx_struct{1}.functions = {};
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1158
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1159 line = fgetl (fid);
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1160 while (isempty (strfind (line, ">>")) && ! feof (fid))
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1161 line = fgetl (fid);
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1162 endwhile
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1163
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1164 while (! feof (fid) || line != -1)
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1165 if (! any (! isspace (line)) || line(1) == "#" || any (line == "="))
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1166 ## Comments, blank lines or comments about unimplemented
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1167 ## functions: do nothing
8202
cf59d542f33e replace all TODOs and XXXs with FIXMEs
Jaroslav Hajek <highegg@gmail.com>
parents: 8174
diff changeset
1168 ## FIXME: probably comments and pointers to external functions
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1169 ## could be treated better when printing to screen?
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1170 elseif (! isempty (strfind (line, ">>")))
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1171 ## Skip package name and description as they are in DESCRIPTION
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1172 ## already.
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1173 elseif (! isspace (line(1)))
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1174 ## Category.
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1175 if (! isempty (pkg_idx_struct{cat_num}.functions))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1176 pkg_idx_struct{++cat_num}.functions = {};
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1177 endif
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1178 pkg_idx_struct{cat_num}.category = deblank (line);
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1179 else
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1180 ## Function names.
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1181 while (any (! isspace (line)))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1182 [fun_name, line] = strtok (line);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1183 pkg_idx_struct{cat_num}.functions{end+1} = deblank (fun_name);
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1184 endwhile
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1185 endif
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1186 line = fgetl (fid);
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1187 endwhile
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1188 fclose (fid);
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1189 endfunction
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1190
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1191 function print_package_description (pkg_name, pkg_ver, pkg_idx_struct,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1192 pkg_desc, status, verbose)
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1193
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1194 printf ("---\nPackage name:\n\t%s\n", pkg_name);
9258
a653c61ee98c let pkg describe return version information
Carlo de Falco <kingcrimson@tiscali.it>
parents: 9220
diff changeset
1195 printf ("Version:\n\t%s\n", pkg_ver);
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1196 printf ("Short description:\n\t%s\n", pkg_desc);
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1197 printf ("Status:\n\t%s\n", status);
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1198 if (verbose)
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1199 printf ("---\nProvides:\n");
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1200 for i = 1:length(pkg_idx_struct)
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1201 if (! isempty (pkg_idx_struct{i}.functions))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1202 printf ("%s\n", pkg_idx_struct{i}.category);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1203 for j = 1:length(pkg_idx_struct{i}.functions)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1204 printf ("\t%s\n", pkg_idx_struct{i}.functions{j});
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1205 endfor
7497
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1206 endif
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1207 endfor
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1208 endif
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1209
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1210 endfunction
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1211
bb7cc90cdc5e added describe command to pkg
carlo@guglielmo.local
parents: 7329
diff changeset
1212
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1213 function pth = absolute_pathname (pth)
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1214 [status, msg, msgid] = fileattrib (pth);
6729
9b4c16beea1c [project @ 2007-06-14 22:33:56 by dbateman]
dbateman
parents: 6712
diff changeset
1215 if (status != 1)
9b4c16beea1c [project @ 2007-06-14 22:33:56 by dbateman]
dbateman
parents: 6712
diff changeset
1216 error ("could not find the file or path %s", pth);
9b4c16beea1c [project @ 2007-06-14 22:33:56 by dbateman]
dbateman
parents: 6712
diff changeset
1217 else
9b4c16beea1c [project @ 2007-06-14 22:33:56 by dbateman]
dbateman
parents: 6712
diff changeset
1218 pth = msg.Name;
9b4c16beea1c [project @ 2007-06-14 22:33:56 by dbateman]
dbateman
parents: 6712
diff changeset
1219 endif
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1220 endfunction
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1221
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1222 function repackage (builddir, buildlist)
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1223 packages = installed_packages (buildlist, buildlist);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1224
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1225 wd = pwd();
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1226 for i = 1 : length(packages)
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1227 pack = packages{i};
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1228 unwind_protect
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1229 cd (builddir);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1230 mkdir (pack.name);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1231 mkdir (fullfile (pack.name, "inst"));
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1232 copyfile (fullfile (pack.dir, "*"), fullfile (pack.name, "inst"));
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1233 movefile (fullfile (pack.name, "inst","packinfo", "*"), pack.name);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1234 if (exist (fullfile (pack.name, "inst","packinfo", ".autoload"), "file"))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1235 unlink (fullfile (pack.name, "inst","packinfo", ".autoload"));
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1236 endif
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1237 rmdir (fullfile (pack.name, "inst", "packinfo"));
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1238 if (exist (fullfile (pack.name, "inst", "doc"), "dir"))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1239 movefile (fullfile (pack.name, "inst", "doc"), pack.name);
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1240 endif
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1241 if (exist (fullfile (pack.name, "inst", "bin"), "dir"))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1242 movefile (fullfile (pack.name, "inst", "bin"), pack.name);
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1243 endif
7540
3422f39573b1 strcat.m: Matlab compatibility, with cstrcat.m replacing conventional strcat.m.
Ben Abbott <bpabbott@mac.com>
parents: 7498
diff changeset
1244 archdir = fullfile (pack.archprefix, cstrcat (pack.name, "-",
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1245 pack.version), getarch ());
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1246 if (exist (archdir, "dir"))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1247 if (exist (fullfile (pack.name, "inst", "PKG_ADD"), "file"))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1248 unlink (fullfile (pack.name, "inst", "PKG_ADD"));
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1249 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1250 if (exist (fullfile (pack.name, "inst", "PKG_DEL"), "file"))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1251 unlink (fullfile (pack.name, "inst", "PKG_DEL"));
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1252 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1253 if (exist (fullfile (archdir, "PKG_ADD"), "file"))
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1254 movefile (fullfile (archdir, "PKG_ADD"),
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1255 fullfile (pack.name, "PKG_ADD"));
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1256 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1257 if (exist (fullfile (archdir, "PKG_DEL"), "file"))
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1258 movefile (fullfile (archdir, "PKG_DEL"),
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1259 fullfile (pack.name, "PKG_DEL"));
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1260 endif
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1261 else
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1262 if (exist (fullfile (pack.name, "inst", "PKG_ADD"), "file"))
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1263 movefile (fullfile (pack.name, "inst", "PKG_ADD"),
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1264 fullfile (pack.name, "PKG_ADD"));
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1265 endif
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1266 if (exist (fullfile (pack.name, "inst", "PKG_DEL"), "file"))
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1267 movefile (fullfile (pack.name, "inst", "PKG_DEL"),
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1268 fullfile (pack.name, "PKG_DEL"));
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1269 endif
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1270 endif
7540
3422f39573b1 strcat.m: Matlab compatibility, with cstrcat.m replacing conventional strcat.m.
Ben Abbott <bpabbott@mac.com>
parents: 7498
diff changeset
1271 tfile = cstrcat (pack.name, "-", pack.version, ".tar");
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1272 tar (tfile, pack.name);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1273 try
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1274 gzip (tfile);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1275 unlink (tfile);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1276 catch
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1277 warning ("failed to compress %s", tfile);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1278 end_try_catch
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1279 unwind_protect_cleanup
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1280 if (exist (pack.name, "dir"))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1281 rm_rf (pack.name);
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1282 endif
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1283 cd (wd);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1284 end_unwind_protect
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1285 endfor
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1286 endfunction
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1287
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1288 function auto = isautoload (desc)
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
1289 auto = false;
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
1290 if (isfield (desc{1}, "autoload"))
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
1291 a = desc{1}.autoload;
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
1292 if ((isnumeric (a) && a > 0)
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
1293 || (ischar (a) && (strcmpi (a, "true")
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1294 || strcmpi (a, "on")
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1295 || strcmpi (a, "yes")
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1296 || strcmpi (a, "1"))))
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
1297 auto = true;
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
1298 endif
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1299 endif
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1300 endfunction
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1301
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1302 function prepare_installation (desc, packdir)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1303 ## Is there a pre_install to call?
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1304 if (exist (fullfile (packdir, "pre_install.m"), "file"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1305 wd = pwd ();
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1306 try
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1307 cd (packdir);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1308 pre_install (desc);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1309 cd (wd);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1310 catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1311 cd (wd);
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
1312 rethrow (lasterror ());
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1313 end_try_catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1314 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1315
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1316 ## If the directory "inst" doesn't exist, we create it.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1317 inst_dir = fullfile (packdir, "inst");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1318 if (! exist (inst_dir, "dir"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1319 [status, msg] = mkdir (inst_dir);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1320 if (status != 1)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1321 rm_rf (desc.dir);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1322 error ("the 'inst' directory did not exist and could not be created: %s",
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1323 msg);
6258
ea3a7e8469e9 [project @ 2007-01-30 20:17:19 by dbateman]
dbateman
parents: 6254
diff changeset
1324 endif
ea3a7e8469e9 [project @ 2007-01-30 20:17:19 by dbateman]
dbateman
parents: 6254
diff changeset
1325 endif
ea3a7e8469e9 [project @ 2007-01-30 20:17:19 by dbateman]
dbateman
parents: 6254
diff changeset
1326 endfunction
ea3a7e8469e9 [project @ 2007-01-30 20:17:19 by dbateman]
dbateman
parents: 6254
diff changeset
1327
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1328 function configure_make (desc, packdir, verbose)
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1329 ## Perform ./configure, make, make install in "src".
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1330 if (exist (fullfile (packdir, "src"), "dir"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1331 src = fullfile (packdir, "src");
12167
ad636c1f353b Let pkg.m export environment variables MKOCTFILE, OCTAVE_CONFIG and OCTAVE.
Olaf Till <olaf.till@uni-jena.de>
parents: 11589
diff changeset
1332 octave_bindir = octave_config_info ("bindir");
ad636c1f353b Let pkg.m export environment variables MKOCTFILE, OCTAVE_CONFIG and OCTAVE.
Olaf Till <olaf.till@uni-jena.de>
parents: 11589
diff changeset
1333 ver = version ();
ad636c1f353b Let pkg.m export environment variables MKOCTFILE, OCTAVE_CONFIG and OCTAVE.
Olaf Till <olaf.till@uni-jena.de>
parents: 11589
diff changeset
1334 mkoctfile = fullfile (octave_bindir, sprintf ("mkoctfile-%s", ver));
ad636c1f353b Let pkg.m export environment variables MKOCTFILE, OCTAVE_CONFIG and OCTAVE.
Olaf Till <olaf.till@uni-jena.de>
parents: 11589
diff changeset
1335 octave_config = fullfile (octave_bindir, sprintf ("octave-config-%s", ver));
ad636c1f353b Let pkg.m export environment variables MKOCTFILE, OCTAVE_CONFIG and OCTAVE.
Olaf Till <olaf.till@uni-jena.de>
parents: 11589
diff changeset
1336 octave_binary = fullfile (octave_bindir, sprintf ("octave-%s", ver));
ad636c1f353b Let pkg.m export environment variables MKOCTFILE, OCTAVE_CONFIG and OCTAVE.
Olaf Till <olaf.till@uni-jena.de>
parents: 11589
diff changeset
1337 cenv = {"MKOCTFILE"; mkoctfile;
ad636c1f353b Let pkg.m export environment variables MKOCTFILE, OCTAVE_CONFIG and OCTAVE.
Olaf Till <olaf.till@uni-jena.de>
parents: 11589
diff changeset
1338 "OCTAVE_CONFIG"; octave_config;
ad636c1f353b Let pkg.m export environment variables MKOCTFILE, OCTAVE_CONFIG and OCTAVE.
Olaf Till <olaf.till@uni-jena.de>
parents: 11589
diff changeset
1339 "OCTAVE"; octave_binary;
ad636c1f353b Let pkg.m export environment variables MKOCTFILE, OCTAVE_CONFIG and OCTAVE.
Olaf Till <olaf.till@uni-jena.de>
parents: 11589
diff changeset
1340 "INSTALLDIR"; desc.dir};
ad636c1f353b Let pkg.m export environment variables MKOCTFILE, OCTAVE_CONFIG and OCTAVE.
Olaf Till <olaf.till@uni-jena.de>
parents: 11589
diff changeset
1341 scenv = sprintf ("%s=\"%s\" ", cenv{:});
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1342 ## Configure.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1343 if (exist (fullfile (src, "configure"), "file"))
7111
9c73ef1819c7 [project @ 2007-11-06 22:47:35 by jwe]
jwe
parents: 7073
diff changeset
1344 flags = "";
9c73ef1819c7 [project @ 2007-11-06 22:47:35 by jwe]
jwe
parents: 7073
diff changeset
1345 if (isempty (getenv ("CC")))
7540
3422f39573b1 strcat.m: Matlab compatibility, with cstrcat.m replacing conventional strcat.m.
Ben Abbott <bpabbott@mac.com>
parents: 7498
diff changeset
1346 flags = cstrcat (flags, " CC=\"", octave_config_info ("CC"), "\"");
7111
9c73ef1819c7 [project @ 2007-11-06 22:47:35 by jwe]
jwe
parents: 7073
diff changeset
1347 endif
9c73ef1819c7 [project @ 2007-11-06 22:47:35 by jwe]
jwe
parents: 7073
diff changeset
1348 if (isempty (getenv ("CXX")))
7540
3422f39573b1 strcat.m: Matlab compatibility, with cstrcat.m replacing conventional strcat.m.
Ben Abbott <bpabbott@mac.com>
parents: 7498
diff changeset
1349 flags = cstrcat (flags, " CXX=\"", octave_config_info ("CXX"), "\"");
7111
9c73ef1819c7 [project @ 2007-11-06 22:47:35 by jwe]
jwe
parents: 7073
diff changeset
1350 endif
9c73ef1819c7 [project @ 2007-11-06 22:47:35 by jwe]
jwe
parents: 7073
diff changeset
1351 if (isempty (getenv ("AR")))
7540
3422f39573b1 strcat.m: Matlab compatibility, with cstrcat.m replacing conventional strcat.m.
Ben Abbott <bpabbott@mac.com>
parents: 7498
diff changeset
1352 flags = cstrcat (flags, " AR=\"", octave_config_info ("AR"), "\"");
7111
9c73ef1819c7 [project @ 2007-11-06 22:47:35 by jwe]
jwe
parents: 7073
diff changeset
1353 endif
9c73ef1819c7 [project @ 2007-11-06 22:47:35 by jwe]
jwe
parents: 7073
diff changeset
1354 if (isempty (getenv ("RANLIB")))
7540
3422f39573b1 strcat.m: Matlab compatibility, with cstrcat.m replacing conventional strcat.m.
Ben Abbott <bpabbott@mac.com>
parents: 7498
diff changeset
1355 flags = cstrcat (flags, " RANLIB=\"", octave_config_info ("RANLIB"), "\"");
7111
9c73ef1819c7 [project @ 2007-11-06 22:47:35 by jwe]
jwe
parents: 7073
diff changeset
1356 endif
12167
ad636c1f353b Let pkg.m export environment variables MKOCTFILE, OCTAVE_CONFIG and OCTAVE.
Olaf Till <olaf.till@uni-jena.de>
parents: 11589
diff changeset
1357 [status, output] = shell (cstrcat ("cd '", src, "'; ", scenv,
13141
e81ddf9cacd5 maint: untabify and remove trailing whitespace from source files
John W. Eaton <jwe@octave.org>
parents: 12931
diff changeset
1358 "./configure --prefix=\"",
12167
ad636c1f353b Let pkg.m export environment variables MKOCTFILE, OCTAVE_CONFIG and OCTAVE.
Olaf Till <olaf.till@uni-jena.de>
parents: 11589
diff changeset
1359 desc.dir, "\"", flags));
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1360 if (status != 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1361 rm_rf (desc.dir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1362 error ("the configure script returned the following error: %s", output);
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1363 elseif (verbose)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1364 printf("%s", output);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1365 endif
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1366
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1367 endif
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1368
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1369 ## Make.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1370 if (exist (fullfile (src, "Makefile"), "file"))
12167
ad636c1f353b Let pkg.m export environment variables MKOCTFILE, OCTAVE_CONFIG and OCTAVE.
Olaf Till <olaf.till@uni-jena.de>
parents: 11589
diff changeset
1371 [status, output] = shell (cstrcat (scenv, "make -C '", src, "'"));
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1372 if (status != 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1373 rm_rf (desc.dir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1374 error ("'make' returned the following error: %s", output);
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1375 elseif (verbose)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1376 printf("%s", output);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1377 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1378 endif
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1379
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1380 ## Copy files to "inst" and "inst/arch" (this is instead of 'make
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1381 ## install').
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1382 files = fullfile (src, "FILES");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1383 instdir = fullfile (packdir, "inst");
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
1384 archdir = fullfile (packdir, "inst", getarch ());
6950
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
1385
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1386 ## Get file names.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1387 if (exist (files, "file"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1388 [fid, msg] = fopen (files, "r");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1389 if (fid < 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1390 error ("couldn't open %s: %s", files, msg);
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
1391 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1392 filenames = char (fread (fid))';
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1393 fclose (fid);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1394 if (filenames(end) == "\n")
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1395 filenames(end) = [];
6258
ea3a7e8469e9 [project @ 2007-01-30 20:17:19 by dbateman]
dbateman
parents: 6254
diff changeset
1396 endif
6655
8dda89ca38f6 [project @ 2007-05-22 19:25:29 by jwe]
jwe
parents: 6645
diff changeset
1397 filenames = split_by (filenames, "\n");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1398 delete_idx = [];
6655
8dda89ca38f6 [project @ 2007-05-22 19:25:29 by jwe]
jwe
parents: 6645
diff changeset
1399 for i = 1:length (filenames)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1400 if (! all (isspace (filenames{i})))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1401 filenames{i} = fullfile (src, filenames{i});
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1402 else
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1403 delete_idx(end+1) = i;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1404 endif
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
1405 endfor
6655
8dda89ca38f6 [project @ 2007-05-22 19:25:29 by jwe]
jwe
parents: 6645
diff changeset
1406 filenames(delete_idx) = [];
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1407 else
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1408 m = dir (fullfile (src, "*.m"));
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1409 oct = dir (fullfile (src, "*.oct"));
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1410 mex = dir (fullfile (src, "*.mex"));
8174
ea9b5f31bfac pkg.m: better handling of filenames with spaces
John W. Eaton <jwe@octave.org>
parents: 8172
diff changeset
1411
ea9b5f31bfac pkg.m: better handling of filenames with spaces
John W. Eaton <jwe@octave.org>
parents: 8172
diff changeset
1412 filenames = cellfun (@(x) fullfile (src, x),
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1413 {m.name, oct.name, mex.name},
11191
01ddaedd6ad5 Reverse changeset b1f4bdc276b6. Use all lower case for "uniformoutput" option.
Rik <octave@nomad.inbox5.com>
parents: 11190
diff changeset
1414 "uniformoutput", false);
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
1415 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1416
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1417 ## Split into architecture dependent and independent files.
7024
7e3492d02821 [project @ 2007-10-14 19:28:42 by dbateman]
dbateman
parents: 7017
diff changeset
1418 if (isempty (filenames))
7e3492d02821 [project @ 2007-10-14 19:28:42 by dbateman]
dbateman
parents: 7017
diff changeset
1419 idx = [];
7e3492d02821 [project @ 2007-10-14 19:28:42 by dbateman]
dbateman
parents: 7017
diff changeset
1420 else
12931
cefd568ea073 Replace function handles with function names in cellfun calls for 15% speedup.
Rik <octave@nomad.inbox5.com>
parents: 12779
diff changeset
1421 idx = cellfun ("is_architecture_dependent", filenames);
7024
7e3492d02821 [project @ 2007-10-14 19:28:42 by dbateman]
dbateman
parents: 7017
diff changeset
1422 endif
6950
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
1423 archdependent = filenames (idx);
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
1424 archindependent = filenames (!idx);
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
1425
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1426 ## Copy the files.
7548
9cbf1e2011a3 pkg.m: adapt to changes in isspace for cell arrays of strings.
Michael Goffioul <michael.goffioul@gmail.com>
parents: 7540
diff changeset
1427 if (! all (isspace ([filenames{:}])))
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1428 if (! exist (instdir, "dir"))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1429 mkdir (instdir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1430 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1431 if (! all (isspace ([archindependent{:}])))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1432 if (verbose)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1433 printf ("copyfile");
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1434 printf (" %s", archindependent{:});
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1435 printf ("%s\n", instdir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1436 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1437 [status, output] = copyfile (archindependent, instdir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1438 if (status != 1)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1439 rm_rf (desc.dir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1440 error ("Couldn't copy files from 'src' to 'inst': %s", output);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1441 endif
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
1442 endif
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1443 if (! all (isspace ([archdependent{:}])))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1444 if (verbose)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1445 printf ("copyfile");
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1446 printf (" %s", archdependent{:});
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1447 printf (" %s\n", archdir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1448 endif
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1449 if (! exist (archdir, "dir"))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1450 mkdir (archdir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1451 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1452 [status, output] = copyfile (archdependent, archdir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1453 if (status != 1)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1454 rm_rf (desc.dir);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1455 error ("Couldn't copy files from 'src' to 'inst': %s", output);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1456 endif
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
1457 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1458 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1459 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1460 endfunction
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1461
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
1462 function pkg = extract_pkg (nm, pat)
5955
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1463 fid = fopen (nm, "rt");
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
1464 pkg = "";
5955
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1465 if (fid >= 0)
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1466 while (! feof (fid))
5955
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1467 ln = fgetl (fid);
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1468 if (ln > 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1469 t = regexp (ln, pat, "tokens");
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1470 if (! isempty (t))
7540
3422f39573b1 strcat.m: Matlab compatibility, with cstrcat.m replacing conventional strcat.m.
Ben Abbott <bpabbott@mac.com>
parents: 7498
diff changeset
1471 pkg = cstrcat (pkg, "\n", t{1}{1});
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1472 endif
5955
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1473 endif
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1474 endwhile
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1475 if (! isempty (pkg))
7540
3422f39573b1 strcat.m: Matlab compatibility, with cstrcat.m replacing conventional strcat.m.
Ben Abbott <bpabbott@mac.com>
parents: 7498
diff changeset
1476 pkg = cstrcat (pkg, "\n");
5955
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1477 endif
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1478 fclose (fid);
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1479 endif
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1480 endfunction
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1481
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1482 function create_pkgadddel (desc, packdir, nm, global_install)
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1483 instpkg = fullfile (desc.dir, nm);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1484 instfid = fopen (instpkg, "wt");
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1485 ## If it is exists, most of the PKG_* file should go into the
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1486 ## architecture dependent directory so that the autoload/mfilename
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1487 ## commands work as expected. The only part that doesn't is the
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1488 ## part in the main directory.
7540
3422f39573b1 strcat.m: Matlab compatibility, with cstrcat.m replacing conventional strcat.m.
Ben Abbott <bpabbott@mac.com>
parents: 7498
diff changeset
1489 archdir = fullfile (getarchprefix (desc), cstrcat (desc.name, "-",
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1490 desc.version), getarch ());
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1491 if (exist (getarchdir (desc, global_install), "dir"))
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1492 archpkg = fullfile (getarchdir (desc, global_install), nm);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1493 archfid = fopen (archpkg, "at");
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1494 else
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1495 archpkg = instpkg;
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1496 archfid = instfid;
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1497 endif
6634
8c2fff7b50b0 [project @ 2007-05-18 21:38:13 by dbateman]
dbateman
parents: 6616
diff changeset
1498
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1499 if (archfid >= 0 && instfid >= 0)
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1500 ## Search all dot-m files for PKG commands.
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1501 lst = dir (fullfile (packdir, "inst", "*.m"));
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1502 for i = 1:length (lst)
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1503 nam = fullfile (packdir, "inst", lst(i).name);
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1504 fwrite (instfid, extract_pkg (nam, ['^[#%][#%]* *' nm ': *(.*)$']));
5955
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1505 endfor
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1506
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1507 ## Search all C++ source files for PKG commands.
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1508 lst = dir (fullfile (packdir, "src", "*.cc"));
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1509 for i = 1:length (lst)
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1510 nam = fullfile (packdir, "src", lst(i).name);
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1511 fwrite (archfid, extract_pkg (nam, ['^//* *' nm ': *(.*)$']));
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1512 fwrite (archfid, extract_pkg (nam, ['^/\** *' nm ': *(.*) *\*/$']));
5955
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1513 endfor
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1514
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1515 ## Add developer included PKG commands.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1516 packdirnm = fullfile (packdir, nm);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1517 if (exist (packdirnm, "file"))
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1518 fid = fopen (packdirnm, "rt");
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1519 if (fid >= 0)
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1520 while (! feof (fid))
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1521 ln = fgets (fid);
5955
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1522 if (ln > 0)
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1523 fwrite (archfid, ln);
5955
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1524 endif
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1525 endwhile
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1526 fclose (fid);
5955
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1527 endif
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1528 endif
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
1529
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1530 ## If the files is empty remove it.
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1531 fclose (instfid);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1532 t = dir (instpkg);
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
1533 if (t.bytes <= 0)
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1534 unlink (instpkg);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1535 endif
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1536
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1537 if (instfid != archfid)
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1538 fclose (archfid);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1539 t = dir (archpkg);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1540 if (t.bytes <= 0)
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1541 unlink (archpkg);
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1542 endif
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
1543 endif
5955
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1544 endif
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1545 endfunction
fc46f9c99028 [project @ 2006-08-22 18:37:43 by jwe]
jwe
parents: 5947
diff changeset
1546
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1547 function copy_files (desc, packdir, global_install)
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1548 ## Create the installation directory.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1549 if (! exist (desc.dir, "dir"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1550 [status, output] = mkdir (desc.dir);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1551 if (status != 1)
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1552 error ("couldn't create installation directory %s : %s",
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1553 desc.dir, output);
6020
f542445f6b7a [project @ 2006-10-02 19:24:08 by dbateman]
dbateman
parents: 5993
diff changeset
1554 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1555 endif
6020
f542445f6b7a [project @ 2006-10-02 19:24:08 by dbateman]
dbateman
parents: 5993
diff changeset
1556
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1557 octfiledir = getarchdir (desc);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1558
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1559 ## Copy the files from "inst" to installdir.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1560 instdir = fullfile (packdir, "inst");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1561 if (! dirempty (instdir))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1562 [status, output] = copyfile (fullfile (instdir, "*"), desc.dir);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1563 if (status != 1)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1564 rm_rf (desc.dir);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1565 error ("couldn't copy files to the installation directory");
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1566 endif
11149
fe3c3dfc07eb style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
1567 if (exist (fullfile (desc.dir, getarch ()), "dir")
fe3c3dfc07eb style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
1568 && ! strcmp (fullfile (desc.dir, getarch ()), octfiledir))
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1569 if (! exist (octfiledir, "dir"))
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1570 ## Can be required to create upto three levels of dirs.
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1571 octm1 = fileparts (octfiledir);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1572 if (! exist (octm1, "dir"))
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1573 octm2 = fileparts (octm1);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1574 if (! exist (octm2, "dir"))
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1575 octm3 = fileparts (octm2);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1576 if (! exist (octm3, "dir"))
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1577 [status, output] = mkdir (octm3);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1578 if (status != 1)
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1579 rm_rf (desc.dir);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1580 error ("couldn't create installation directory %s : %s",
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1581 octm3, output);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1582 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1583 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1584 [status, output] = mkdir (octm2);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1585 if (status != 1)
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1586 rm_rf (desc.dir);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1587 error ("couldn't create installation directory %s : %s",
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1588 octm2, output);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1589 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1590 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1591 [status, output] = mkdir (octm1);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1592 if (status != 1)
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1593 rm_rf (desc.dir);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1594 error ("couldn't create installation directory %s : %s",
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1595 octm1, output);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1596 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1597 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1598 [status, output] = mkdir (octfiledir);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1599 if (status != 1)
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1600 rm_rf (desc.dir);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1601 error ("couldn't create installation directory %s : %s",
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1602 octfiledir, output);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1603 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1604 endif
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1605 [status, output] = movefile (fullfile (desc.dir, getarch (), "*"),
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1606 octfiledir);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1607 rm_rf (fullfile (desc.dir, getarch ()));
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1608
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1609 if (status != 1)
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1610 rm_rf (desc.dir);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1611 rm_rf (octfiledir);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1612 error ("couldn't copy files to the installation directory");
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1613 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1614 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1615
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1616 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1617
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1618 ## Create the "packinfo" directory.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1619 packinfo = fullfile (desc.dir, "packinfo");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1620 [status, msg] = mkdir (packinfo);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1621 if (status != 1)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1622 rm_rf (desc.dir);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1623 rm_rf (octfiledir);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1624 error ("couldn't create packinfo directory: %s", msg);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1625 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1626
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1627 ## Copy DESCRIPTION.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1628 [status, output] = copyfile (fullfile (packdir, "DESCRIPTION"), packinfo);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1629 if (status != 1)
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1630 rm_rf (desc.dir);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1631 rm_rf (octfiledir);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1632 error ("couldn't copy DESCRIPTION: %s", output);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1633 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1634
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1635 ## Copy COPYING.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1636 [status, output] = copyfile (fullfile (packdir, "COPYING"), packinfo);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1637 if (status != 1)
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1638 rm_rf (desc.dir);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1639 rm_rf (octfiledir);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1640 error ("couldn't copy COPYING: %s", output);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1641 endif
5993
401ca0de8506 [project @ 2006-09-15 21:51:25 by dbateman]
dbateman
parents: 5987
diff changeset
1642
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1643 ## If the file ChangeLog exists, copy it.
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1644 changelog_file = fullfile (packdir, "ChangeLog");
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1645 if (exist (changelog_file, "file"))
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1646 [status, output] = copyfile (changelog_file, packinfo);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1647 if (status != 1)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1648 rm_rf (desc.dir);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1649 rm_rf (octfiledir);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1650 error ("couldn't copy ChangeLog file: %s", output);
6254
5b43c2332b69 [project @ 2007-01-29 17:35:15 by jwe]
jwe
parents: 6252
diff changeset
1651 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1652 endif
6254
5b43c2332b69 [project @ 2007-01-29 17:35:15 by jwe]
jwe
parents: 6252
diff changeset
1653
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1654 ## Is there an INDEX file to copy or should we generate one?
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1655 index_file = fullfile (packdir, "INDEX");
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1656 if (exist(index_file, "file"))
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1657 [status, output] = copyfile (index_file, packinfo);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1658 if (status != 1)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1659 rm_rf (desc.dir);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1660 rm_rf (octfiledir);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1661 error ("couldn't copy INDEX file: %s", output);
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1662 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1663 else
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1664 try
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1665 write_index (desc, fullfile (packdir, "inst"),
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1666 fullfile (packinfo, "INDEX"), global_install);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1667 catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1668 rm_rf (desc.dir);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1669 rm_rf (octfiledir);
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
1670 rethrow (lasterror ());
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1671 end_try_catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1672 endif
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
1673
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1674 ## Is there an 'on_uninstall.m' to install?
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1675 fon_uninstall = fullfile (packdir, "on_uninstall.m");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1676 if (exist (fon_uninstall, "file"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1677 [status, output] = copyfile (fon_uninstall, packinfo);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1678 if (status != 1)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1679 rm_rf (desc.dir);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1680 rm_rf (octfiledir);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1681 error ("couldn't copy on_uninstall.m: %s", output);
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
1682 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1683 endif
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
1684
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1685 ## Is there a doc/ directory that needs to be installed?
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1686 docdir = fullfile (packdir, "doc");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1687 if (exist (docdir, "dir") && ! dirempty (docdir))
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1688 [status, output] = copyfile (docdir, desc.dir);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1689 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1690
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1691 ## Is there a bin/ directory that needs to be installed?
6950
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
1692 ## FIXME: Need to treat architecture dependent files in bin/
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1693 bindir = fullfile (packdir, "bin");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1694 if (exist (bindir, "dir") && ! dirempty (bindir))
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1695 [status, output] = copyfile (bindir, desc.dir);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1696 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1697 endfunction
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1698
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1699 function finish_installation (desc, packdir, global_install)
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1700 ## Is there a post-install to call?
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1701 if (exist (fullfile (packdir, "post_install.m"), "file"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1702 wd = pwd ();
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1703 try
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1704 cd (packdir);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1705 post_install (desc);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1706 cd (wd);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1707 catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1708 cd (wd);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1709 rm_rf (desc.dir);
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1710 rm_rf (getarchdir (desc), global_install);
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
1711 rethrow (lasterror ());
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1712 end_try_catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1713 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1714 endfunction
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1715
8575
f134925a1cfa m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents: 8507
diff changeset
1716 function generate_lookfor_cache (desc)
8863
34a821854961 pkg.m (generate_lookfor_cache): generate a DOC file for each directory
Jason Riedy <jason@acm.org>
parents: 8746
diff changeset
1717 dirs = split_by (genpath (desc.dir), pathsep ());
34a821854961 pkg.m (generate_lookfor_cache): generate a DOC file for each directory
Jason Riedy <jason@acm.org>
parents: 8746
diff changeset
1718 for i = 1 : length (dirs)
8942
c4383701e10d use doc-cache instead of DOC for doc cache file name
John W. Eaton <jwe@octave.org>
parents: 8920
diff changeset
1719 gen_doc_cache (fullfile (dirs{i}, "doc-cache"), dirs{i});
8863
34a821854961 pkg.m (generate_lookfor_cache): generate a DOC file for each directory
Jason Riedy <jason@acm.org>
parents: 8746
diff changeset
1720 endfor
8575
f134925a1cfa m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents: 8507
diff changeset
1721 endfunction
f134925a1cfa m-file implementation of help system
Soren Hauberg <soren@hauberg.org>
parents: 8507
diff changeset
1722
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1723 ## Make sure the package contains the essential files.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1724 function verify_directory (dir)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1725 needed_files = {"COPYING", "DESCRIPTION"};
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1726 for f = needed_files
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1727 if (! exist (fullfile (dir, f{1}), "file"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1728 error ("package is missing file: %s", f{1});
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1729 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1730 endfor
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1731 endfunction
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1732
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1733 ## Parse the DESCRIPTION file.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1734 function desc = get_description (filename)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1735 [fid, msg] = fopen (filename, "r");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1736 if (fid == -1)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1737 error ("the DESCRIPTION file %s could not be read: %s", filename, msg);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1738 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1739
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1740 desc = struct ();
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1741
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1742 line = fgetl (fid);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1743 while (line != -1)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1744 if (line(1) == "#")
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1745 ## Comments, do nothing.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1746 elseif (isspace(line(1)))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1747 ## Continuation lines
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1748 if (exist ("keyword", "var") && isfield (desc, keyword))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1749 desc.(keyword) = cstrcat (desc.(keyword), " ", rstrip(line));
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1750 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1751 else
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1752 ## Keyword/value pair
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1753 colon = find (line == ":");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1754 if (length (colon) == 0)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1755 disp ("skipping line");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1756 else
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1757 colon = colon(1);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1758 keyword = tolower (strip (line(1:colon-1)));
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1759 value = strip (line (colon+1:end));
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1760 if (length (value) == 0)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1761 fclose (fid);
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1762 error ("the keyword %s has an empty value", desc.keywords{end});
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1763 endif
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1764 desc.(keyword) = value;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1765 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1766 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1767 line = fgetl (fid);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1768 endwhile
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1769 fclose (fid);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1770
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1771 ## Make sure all is okay.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1772 needed_fields = {"name", "version", "date", "title", ...
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1773 "author", "maintainer", "description"};
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1774 for f = needed_fields
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1775 if (! isfield (desc, f{1}))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1776 error ("description is missing needed field %s", f{1});
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1777 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1778 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1779 desc.version = fix_version (desc.version);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1780 if (isfield (desc, "depends"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1781 desc.depends = fix_depends (desc.depends);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1782 else
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1783 desc.depends = "";
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1784 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1785 desc.name = tolower (desc.name);
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1786 endfunction
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1787
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1788 ## Make sure the version string v is a valid x.y.z version string
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1789 ## Examples: "0.1" => "0.1.0", "monkey" => error(...).
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1790 function out = fix_version (v)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1791 dots = find (v == ".");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1792 if (length (dots) == 1)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1793 major = str2num (v(1:dots-1));
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1794 minor = str2num (v(dots+1:end));
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1795 if (length (major) != 0 && length (minor) != 0)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1796 out = sprintf ("%d.%d.0", major, minor);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1797 return;
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1798 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1799 elseif (length (dots) == 2)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1800 major = str2num (v(1:dots(1)-1));
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1801 minor = str2num (v(dots(1)+1:dots(2)-1));
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1802 rev = str2num (v(dots(2)+1:end));
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1803 if (length (major) != 0 && length (minor) != 0 && length (rev) != 0)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1804 out = sprintf ("%d.%d.%d", major, minor, rev);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1805 return;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1806 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1807 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1808 error ("bad version string: %s", v);
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1809 endfunction
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1810
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1811 ## Make sure the depends field is of the right format.
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1812 ## This function returns a cell of structures with the following fields:
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1813 ## package, version, operator
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1814 function deps_cell = fix_depends (depends)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1815 deps = split_by (tolower (depends), ",");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1816 deps_cell = cell (1, length (deps));
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1817
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1818 ## For each dependency.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1819 for i = 1:length (deps)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1820 dep = deps{i};
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1821 lpar = find (dep == "(");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1822 rpar = find (dep == ")");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1823 ## Does the dependency specify a version
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1824 ## Example: package(>= version).
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1825 if (length (lpar) == 1 && length (rpar) == 1)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1826 package = tolower (strip (dep(1:lpar-1)));
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1827 sub = dep(lpar(1)+1:rpar(1)-1);
8900
63ad1133d0ed fix & simplify fix_depends pkg.m
Jaroslav Hajek <highegg@gmail.com>
parents: 8877
diff changeset
1828 parts = strsplit (sub, " ", true);
63ad1133d0ed fix & simplify fix_depends pkg.m
Jaroslav Hajek <highegg@gmail.com>
parents: 8877
diff changeset
1829 if (length (parts) != 2)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1830 error ("incorrect syntax for dependency `%s' in the DESCRIPTION file\n",
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1831 dep);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1832 endif
8900
63ad1133d0ed fix & simplify fix_depends pkg.m
Jaroslav Hajek <highegg@gmail.com>
parents: 8877
diff changeset
1833 operator = parts{1};
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1834 if (! any (strcmp (operator, {">", ">=", "<=", "<", "=="})))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1835 error ("unsupported operator: %s", operator);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1836 endif
8900
63ad1133d0ed fix & simplify fix_depends pkg.m
Jaroslav Hajek <highegg@gmail.com>
parents: 8877
diff changeset
1837 version = fix_version (parts{2});
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1838
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1839 ## If no version is specified for the dependency
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1840 ## we say that the version should be greater than
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1841 ## or equal to "0.0.0".
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1842 else
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1843 package = tolower (strip (dep));
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1844 operator = ">=";
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1845 version = "0.0.0";
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1846 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1847 deps_cell{i} = struct ("package", package, "operator", operator,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1848 "version", version);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1849 endfor
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1850 endfunction
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1851
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1852 ## Strip the text of spaces from the right
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1853 ## Example: " hello world " => " hello world"
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1854 ## FIXME -- is this the same as deblank?
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1855 function text = rstrip (text)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1856 chars = find (! isspace (text));
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1857 if (length (chars) > 0)
8202
cf59d542f33e replace all TODOs and XXXs with FIXMEs
Jaroslav Hajek <highegg@gmail.com>
parents: 8174
diff changeset
1858 ## FIXME: shouldn't it be text = text(1:chars(end));
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1859 text = text (chars(1):end);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1860 else
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1861 text = "";
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1862 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1863 endfunction
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1864
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1865 ## Strip the text of spaces from the left and the right.
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1866 ## Example: " hello world " => "hello world"
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1867 function text = strip (text)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1868 chars = find (! isspace (text));
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1869 if (length (chars) > 0)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1870 text = text(chars(1):chars(end));
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1871 else
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1872 text = "";
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1873 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1874 endfunction
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1875
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1876 ## Split the text into a cell array of strings by sep.
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1877 ## Example: "A, B" => {"A", "B"} (with sep = ",")
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1878 function out = split_by (text, sep)
8877
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents: 8863
diff changeset
1879 out = strtrim (strsplit (text, sep));
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1880 endfunction
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1881
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1882 ## Create an INDEX file for a package that doesn't provide one.
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1883 ## 'desc' describes the package.
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1884 ## 'dir' is the 'inst' directory in temporary directory.
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1885 ## 'index_file' is the name (including path) of resulting INDEX file.
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1886 function write_index (desc, dir, index_file, global_install)
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1887 ## Get names of functions in dir
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1888 [files, err, msg] = readdir (dir);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1889 if (err)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1890 error ("couldn't read directory %s: %s", dir, msg);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1891 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1892
10401
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1893 ## Get classes in dir
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1894 class_idx = strmatch ("@", files);
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1895 for k = 1:length (class_idx)
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1896 class_name = files {class_idx (k)};
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1897 class_dir = fullfile (dir, class_name);
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1898 if (exist (class_dir, "dir"))
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1899 [files2, err, msg] = readdir (class_dir);
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1900 if (err)
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1901 error ("couldn't read directory %s: %s", class_dir, msg);
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1902 endif
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1903 files2 = strcat (class_name, filesep (), files2);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1904 files = [files; files2];
10401
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1905 endif
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1906 endfor
6d1e49abf95f pkg/pkg.m (write_index): include classes in autogenerated INDEX files
Soren Hauberg <hauberg@gmail.com>
parents: 10199
diff changeset
1907
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1908 ## Check for architecture dependent files.
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
1909 tmpdir = getarchdir (desc);
6634
8c2fff7b50b0 [project @ 2007-05-18 21:38:13 by dbateman]
dbateman
parents: 6616
diff changeset
1910 if (exist (tmpdir, "dir"))
8c2fff7b50b0 [project @ 2007-05-18 21:38:13 by dbateman]
dbateman
parents: 6616
diff changeset
1911 [files2, err, msg] = readdir (tmpdir);
8c2fff7b50b0 [project @ 2007-05-18 21:38:13 by dbateman]
dbateman
parents: 6616
diff changeset
1912 if (err)
8c2fff7b50b0 [project @ 2007-05-18 21:38:13 by dbateman]
dbateman
parents: 6616
diff changeset
1913 error ("couldn't read directory %s: %s", tmpdir, msg);
8c2fff7b50b0 [project @ 2007-05-18 21:38:13 by dbateman]
dbateman
parents: 6616
diff changeset
1914 endif
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
1915 files = [files; files2];
6634
8c2fff7b50b0 [project @ 2007-05-18 21:38:13 by dbateman]
dbateman
parents: 6616
diff changeset
1916 endif
8c2fff7b50b0 [project @ 2007-05-18 21:38:13 by dbateman]
dbateman
parents: 6616
diff changeset
1917
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1918 functions = {};
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1919 for i = 1:length (files)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1920 file = files{i};
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1921 lf = length (file);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1922 if (lf > 2 && strcmp (file(end-1:end), ".m"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1923 functions{end+1} = file(1:end-2);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1924 elseif (lf > 4 && strcmp (file(end-3:end), ".oct"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1925 functions{end+1} = file(1:end-4);
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1926 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1927 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1928
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1929 ## Does desc have a categories field?
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1930 if (! isfield (desc, "categories"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1931 error ("the DESCRIPTION file must have a Categories field, when no INDEX file is given");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1932 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1933 categories = split_by (desc.categories, ",");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1934 if (length (categories) < 1)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1935 error ("the Category field is empty");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1936 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1937
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1938 ## Write INDEX.
7498
a939fb03a137 pkg.m style fixes
John W. Eaton <jwe@octave.org>
parents: 7497
diff changeset
1939 fid = fopen (index_file, "w");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1940 if (fid == -1)
11588
d5bd2766c640 style fixes for warning and error messages in script files
John W. Eaton <jwe@octave.org>
parents: 11587
diff changeset
1941 error ("couldn't open %s for writing", index_file);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1942 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1943 fprintf (fid, "%s >> %s\n", desc.name, desc.title);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1944 fprintf (fid, "%s\n", categories{1});
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1945 fprintf (fid, " %s\n", functions{:});
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1946 fclose (fid);
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1947 endfunction
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1948
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
1949 function bad_deps = get_unsatisfied_deps (desc, installed_pkgs_lst)
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1950 bad_deps = {};
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1951
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1952 ## For each dependency.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1953 for i = 1:length (desc.depends)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1954 dep = desc.depends{i};
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1955
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1956 ## Is the current dependency Octave?
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1957 if (strcmp (dep.package, "octave"))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1958 if (! compare_versions (OCTAVE_VERSION, dep.version, dep.operator))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1959 bad_deps{end+1} = dep;
6258
ea3a7e8469e9 [project @ 2007-01-30 20:17:19 by dbateman]
dbateman
parents: 6254
diff changeset
1960 endif
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1961 ## Is the current dependency not Octave?
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1962 else
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1963 ok = false;
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
1964 for i = 1:length (installed_pkgs_lst)
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1965 cur_name = installed_pkgs_lst{i}.name;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1966 cur_version = installed_pkgs_lst{i}.version;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1967 if (strcmp (dep.package, cur_name)
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1968 && compare_versions (cur_version, dep.version, dep.operator))
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1969 ok = true;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1970 break;
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
1971 endif
6258
ea3a7e8469e9 [project @ 2007-01-30 20:17:19 by dbateman]
dbateman
parents: 6254
diff changeset
1972 endfor
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1973 if (! ok)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1974 bad_deps{end+1} = dep;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1975 endif
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
1976 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1977 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1978 endfunction
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1979
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1980 function [out1, out2] = installed_packages (local_list, global_list)
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1981 ## Get the list of installed packages.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1982 try
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1983 local_packages = load (local_list).local_packages;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1984 catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1985 local_packages = {};
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1986 end_try_catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1987 try
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
1988 global_packages = load (global_list).global_packages;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1989 catch
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1990 global_packages = {};
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1991 end_try_catch
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
1992 installed_pkgs_lst = {local_packages{:}, global_packages{:}};
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1993
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1994 ## Eliminate duplicates in the installed package list.
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
1995 ## Locally installed packages take precedence.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1996 dup = [];
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
1997 for i = 1:length (installed_pkgs_lst)
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1998 if (find (dup, i))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
1999 continue;
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
2000 endif
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2001 for j = (i+1):length (installed_pkgs_lst)
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2002 if (find (dup, j))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2003 continue;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2004 endif
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2005 if (strcmp (installed_pkgs_lst{i}.name, installed_pkgs_lst{j}.name))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2006 dup = [dup, j];
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2007 endif
5987
f1375e3f3b97 [project @ 2006-09-12 21:25:27 by dbateman]
dbateman
parents: 5976
diff changeset
2008 endfor
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2009 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2010 if (! isempty(dup))
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2011 installed_pkgs_lst(dup) = [];
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
2012 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2013
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2014 ## Now check if the package is loaded.
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2015 tmppath = strrep (path(), "\\", "/");
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2016 for i = 1:length (installed_pkgs_lst)
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2017 if (findstr (tmppath, strrep (installed_pkgs_lst{i}.dir, "\\", "/")))
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2018 installed_pkgs_lst{i}.loaded = true;
6616
66e30383481b [project @ 2007-05-14 13:56:34 by dbateman]
dbateman
parents: 6614
diff changeset
2019 else
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2020 installed_pkgs_lst{i}.loaded = false;
6616
66e30383481b [project @ 2007-05-14 13:56:34 by dbateman]
dbateman
parents: 6614
diff changeset
2021 endif
66e30383481b [project @ 2007-05-14 13:56:34 by dbateman]
dbateman
parents: 6614
diff changeset
2022 endfor
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
2023 for i = 1:length (local_packages)
6776
d388a35a9481 [project @ 2007-07-17 15:22:47 by dbateman]
dbateman
parents: 6729
diff changeset
2024 if (findstr (tmppath, strrep (local_packages{i}.dir, "\\", "/")))
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
2025 local_packages{i}.loaded = true;
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
2026 else
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
2027 local_packages{i}.loaded = false;
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
2028 endif
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
2029 endfor
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
2030 for i = 1:length (global_packages)
6776
d388a35a9481 [project @ 2007-07-17 15:22:47 by dbateman]
dbateman
parents: 6729
diff changeset
2031 if (findstr (tmppath, strrep (global_packages{i}.dir, "\\", "/")))
6675
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
2032 global_packages{i}.loaded = true;
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
2033 else
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
2034 global_packages{i}.loaded = false;
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
2035 endif
f938c7018d28 [project @ 2007-05-31 19:31:14 by dbateman]
dbateman
parents: 6663
diff changeset
2036 endfor
6616
66e30383481b [project @ 2007-05-14 13:56:34 by dbateman]
dbateman
parents: 6614
diff changeset
2037
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2038 ## Should we return something?
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2039 if (nargout == 2)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2040 out1 = local_packages;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2041 out2 = global_packages;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2042 return;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2043 elseif (nargout == 1)
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2044 out1 = installed_pkgs_lst;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2045 return;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2046 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2047
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2048 ## We shouldn't return something, so we'll print something.
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2049 num_packages = length (installed_pkgs_lst);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2050 if (num_packages == 0)
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2051 printf ("no packages installed.\n");
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2052 return;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2053 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2054
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2055 ## Compute the maximal lengths of name, version, and dir.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2056 h1 = "Package Name";
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2057 h2 = "Version";
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2058 h3 = "Installation directory";
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
2059 max_name_length = length (h1);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2060 max_version_length = length (h2);
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
2061 names = cell (num_packages, 1);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2062 for i = 1:num_packages
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2063 max_name_length = max (max_name_length,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2064 length (installed_pkgs_lst{i}.name));
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2065 max_version_length = max (max_version_length,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2066 length (installed_pkgs_lst{i}.version));
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2067 names{i} = installed_pkgs_lst{i}.name;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2068 endfor
6698
6d366791e132 [project @ 2007-06-10 21:13:01 by dbateman]
dbateman
parents: 6696
diff changeset
2069 max_dir_length = terminal_size()(2) - max_name_length - ...
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2070 max_version_length - 7;
6698
6d366791e132 [project @ 2007-06-10 21:13:01 by dbateman]
dbateman
parents: 6696
diff changeset
2071 if (max_dir_length < 20)
6d366791e132 [project @ 2007-06-10 21:13:01 by dbateman]
dbateman
parents: 6696
diff changeset
2072 max_dir_length = Inf;
6d366791e132 [project @ 2007-06-10 21:13:01 by dbateman]
dbateman
parents: 6696
diff changeset
2073 endif
6d366791e132 [project @ 2007-06-10 21:13:01 by dbateman]
dbateman
parents: 6696
diff changeset
2074
6616
66e30383481b [project @ 2007-05-14 13:56:34 by dbateman]
dbateman
parents: 6614
diff changeset
2075 h1 = postpad (h1, max_name_length + 1, " ");
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2076 h2 = postpad (h2, max_version_length, " ");;
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2077
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2078 ## Print a header.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2079 header = sprintf("%s | %s | %s\n", h1, h2, h3);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2080 printf (header);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2081 tmp = sprintf (repmat ("-", 1, length(header)-1));
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2082 tmp(length(h1)+2) = "+";
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2083 tmp(length(h1)+length(h2)+5) = "+";
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2084 printf ("%s\n", tmp);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2085
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2086 ## Print the packages.
6616
66e30383481b [project @ 2007-05-14 13:56:34 by dbateman]
dbateman
parents: 6614
diff changeset
2087 format = sprintf ("%%%ds %%1s| %%%ds | %%s\n", max_name_length,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2088 max_version_length);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2089 [dummy, idx] = sort (names);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2090 for i = 1:num_packages
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2091 cur_name = installed_pkgs_lst{idx(i)}.name;
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2092 cur_version = installed_pkgs_lst{idx(i)}.version;
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2093 cur_dir = installed_pkgs_lst{idx(i)}.dir;
6698
6d366791e132 [project @ 2007-06-10 21:13:01 by dbateman]
dbateman
parents: 6696
diff changeset
2094 if (length (cur_dir) > max_dir_length)
6d366791e132 [project @ 2007-06-10 21:13:01 by dbateman]
dbateman
parents: 6696
diff changeset
2095 first_char = length (cur_dir) - max_dir_length + 4;
6d366791e132 [project @ 2007-06-10 21:13:01 by dbateman]
dbateman
parents: 6696
diff changeset
2096 first_filesep = strfind (cur_dir(first_char:end), filesep());
6d366791e132 [project @ 2007-06-10 21:13:01 by dbateman]
dbateman
parents: 6696
diff changeset
2097 if (! isempty (first_filesep))
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
2098 cur_dir = cstrcat ("...",
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2099 cur_dir((first_char + first_filesep(1) - 1):end));
6698
6d366791e132 [project @ 2007-06-10 21:13:01 by dbateman]
dbateman
parents: 6696
diff changeset
2100 else
7540
3422f39573b1 strcat.m: Matlab compatibility, with cstrcat.m replacing conventional strcat.m.
Ben Abbott <bpabbott@mac.com>
parents: 7498
diff changeset
2101 cur_dir = cstrcat ("...", cur_dir(first_char:end));
6698
6d366791e132 [project @ 2007-06-10 21:13:01 by dbateman]
dbateman
parents: 6696
diff changeset
2102 endif
6d366791e132 [project @ 2007-06-10 21:13:01 by dbateman]
dbateman
parents: 6696
diff changeset
2103 endif
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2104 if (installed_pkgs_lst{idx(i)}.loaded)
6616
66e30383481b [project @ 2007-05-14 13:56:34 by dbateman]
dbateman
parents: 6614
diff changeset
2105 cur_loaded = "*";
66e30383481b [project @ 2007-05-14 13:56:34 by dbateman]
dbateman
parents: 6614
diff changeset
2106 else
66e30383481b [project @ 2007-05-14 13:56:34 by dbateman]
dbateman
parents: 6614
diff changeset
2107 cur_loaded = " ";
66e30383481b [project @ 2007-05-14 13:56:34 by dbateman]
dbateman
parents: 6614
diff changeset
2108 endif
66e30383481b [project @ 2007-05-14 13:56:34 by dbateman]
dbateman
parents: 6614
diff changeset
2109 printf (format, cur_name, cur_loaded, cur_version, cur_dir);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2110 endfor
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
2111 endfunction
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
2112
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2113 function load_packages (files, handle_deps, local_list, global_list)
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2114 installed_pkgs_lst = installed_packages (local_list, global_list);
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2115 num_packages = length (installed_pkgs_lst);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2116
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2117 ## Read package names and installdirs into a more convenient format.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2118 pnames = pdirs = cell (1, num_packages);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2119 for i = 1:num_packages
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2120 pnames{i} = installed_pkgs_lst{i}.name;
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2121 pdirs{i} = installed_pkgs_lst{i}.dir;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2122 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2123
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2124 ## Load all.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2125 if (length (files) == 1 && strcmp (files{1}, "all"))
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2126 idx = [1:length(installed_pkgs_lst)];
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2127 ## Load auto.
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
2128 elseif (length (files) == 1 && strcmp (files{1}, "auto"))
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2129 idx = [];
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2130 for i = 1:length (installed_pkgs_lst)
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2131 if (exist (fullfile (pdirs{i}, "packinfo", ".autoload"), "file"))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2132 idx (end + 1) = i;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2133 endif
6037
b2e7bf961122 [project @ 2006-10-04 20:38:06 by jwe]
jwe
parents: 6036
diff changeset
2134 endfor
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2135 ## Load package_name1 ...
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2136 else
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2137 idx = [];
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2138 for i = 1:length (files)
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2139 idx2 = find (strcmp (pnames, files{i}));
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2140 if (! any (idx2))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2141 error ("package %s is not installed", files{i});
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2142 endif
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2143 idx (end + 1) = idx2;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2144 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2145 endif
6037
b2e7bf961122 [project @ 2006-10-04 20:38:06 by jwe]
jwe
parents: 6036
diff changeset
2146
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2147 ## Load the packages, but take care of the ordering of dependencies.
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2148 load_packages_and_dependencies (idx, handle_deps, installed_pkgs_lst, true);
5801
70013c9f3ccc [project @ 2006-05-10 16:53:03 by jwe]
jwe
parents:
diff changeset
2149 endfunction
5928
e86311bdecc9 [project @ 2006-08-14 19:54:46 by jwe]
jwe
parents: 5801
diff changeset
2150
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2151 function unload_packages (files, handle_deps, local_list, global_list)
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2152 installed_pkgs_lst = installed_packages (local_list, global_list);
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2153 num_packages = length (installed_pkgs_lst);
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2154
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2155 ## Read package names and installdirs into a more convenient format.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2156 pnames = pdirs = cell (1, num_packages);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2157 for i = 1:num_packages
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2158 pnames{i} = installed_pkgs_lst{i}.name;
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2159 pdirs{i} = installed_pkgs_lst{i}.dir;
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2160 pdeps{i} = installed_pkgs_lst{i}.depends;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2161 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2162
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2163 ## Get the current octave path.
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2164 p = split_by (path(), pathsep ());
6203
512d72ee321f [project @ 2006-12-06 18:00:13 by jwe]
jwe
parents: 6189
diff changeset
2165
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2166 if (length (files) == 1 && strcmp (files{1}, "all"))
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2167 ## Unload all.
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2168 dirs = pdirs;
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2169 desc = installed_pkgs_lst;
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2170 else
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2171 ## Unload package_name1 ...
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2172 dirs = {};
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2173 desc = {};
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2174 for i = 1:length (files)
7208
a730e47fda4d [project @ 2007-11-28 02:32:41 by jwe]
jwe
parents: 7192
diff changeset
2175 idx = strcmp (pnames, files{i});
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2176 if (! any (idx))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2177 error ("package %s is not installed", files{i});
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2178 endif
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2179 dirs{end+1} = pdirs{idx};
7208
a730e47fda4d [project @ 2007-11-28 02:32:41 by jwe]
jwe
parents: 7192
diff changeset
2180 desc{end+1} = installed_pkgs_lst{idx};
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2181 endfor
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2182 endif
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2183
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2184 ## Check for architecture dependent directories.
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
2185 archdirs = {};
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
2186 for i = 1:length (dirs)
7208
a730e47fda4d [project @ 2007-11-28 02:32:41 by jwe]
jwe
parents: 7192
diff changeset
2187 tmpdir = getarchdir (desc{i});
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
2188 if (exist (tmpdir, "dir"))
7208
a730e47fda4d [project @ 2007-11-28 02:32:41 by jwe]
jwe
parents: 7192
diff changeset
2189 archdirs{end+1} = dirs{i};
a730e47fda4d [project @ 2007-11-28 02:32:41 by jwe]
jwe
parents: 7192
diff changeset
2190 archdirs{end+1} = tmpdir;
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2191 else
7208
a730e47fda4d [project @ 2007-11-28 02:32:41 by jwe]
jwe
parents: 7192
diff changeset
2192 archdirs{end+1} = dirs{i};
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
2193 endif
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
2194 endfor
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
2195
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2196 ## Unload the packages.
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2197 for i = 1:length (archdirs)
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2198 d = archdirs{i};
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2199 idx = strcmp (p, d);
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2200 if (any (idx))
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2201 rmpath (d);
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2202 ## FIXME: We should also check if we need to remove items from
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2203 ## EXEC_PATH.
6203
512d72ee321f [project @ 2006-12-06 18:00:13 by jwe]
jwe
parents: 6189
diff changeset
2204 endif
6496
e0acfe7c3f7b [project @ 2007-04-05 17:19:30 by jwe]
jwe
parents: 6440
diff changeset
2205 endfor
6203
512d72ee321f [project @ 2006-12-06 18:00:13 by jwe]
jwe
parents: 6189
diff changeset
2206 endfunction
512d72ee321f [project @ 2006-12-06 18:00:13 by jwe]
jwe
parents: 6189
diff changeset
2207
5928
e86311bdecc9 [project @ 2006-08-14 19:54:46 by jwe]
jwe
parents: 5801
diff changeset
2208 function [status_out, msg_out] = rm_rf (dir)
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2209 if (exist (dir))
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2210 crr = confirm_recursive_rmdir ();
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2211 unwind_protect
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2212 confirm_recursive_rmdir (false);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2213 [status, msg] = rmdir (dir, "s");
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2214 unwind_protect_cleanup
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2215 confirm_recursive_rmdir (crr);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2216 end_unwind_protect
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2217 else
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2218 status = 1;
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2219 msg = "";
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2220 endif
5928
e86311bdecc9 [project @ 2006-08-14 19:54:46 by jwe]
jwe
parents: 5801
diff changeset
2221 if (nargout > 0)
e86311bdecc9 [project @ 2006-08-14 19:54:46 by jwe]
jwe
parents: 5801
diff changeset
2222 status_out = status;
e86311bdecc9 [project @ 2006-08-14 19:54:46 by jwe]
jwe
parents: 5801
diff changeset
2223 endif
e86311bdecc9 [project @ 2006-08-14 19:54:46 by jwe]
jwe
parents: 5801
diff changeset
2224 if (nargout > 1)
e86311bdecc9 [project @ 2006-08-14 19:54:46 by jwe]
jwe
parents: 5801
diff changeset
2225 msg_out = msg;
e86311bdecc9 [project @ 2006-08-14 19:54:46 by jwe]
jwe
parents: 5801
diff changeset
2226 endif
e86311bdecc9 [project @ 2006-08-14 19:54:46 by jwe]
jwe
parents: 5801
diff changeset
2227 endfunction
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
2228
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
2229 function emp = dirempty (nm, ign)
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2230 if (exist (nm, "dir"))
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2231 if (nargin < 2)
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2232 ign = {".", ".."};
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2233 else
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2234 ign = [{".", ".."}, ign];
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2235 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2236 l = dir (nm);
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2237 for i = 1:length (l)
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2238 found = false;
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2239 for j = 1:length (ign)
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2240 if (strcmp (l(i).name, ign{j}))
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2241 found = true;
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2242 break;
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2243 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2244 endfor
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2245 if (! found)
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2246 emp = false;
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2247 return
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
2248 endif
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
2249 endfor
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2250 emp = true;
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2251 else
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2252 emp = true;
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2253 endif
5971
9cc8149f81b0 [project @ 2006-08-25 21:14:20 by dbateman]
dbateman
parents: 5955
diff changeset
2254 endfunction
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
2255
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
2256 function arch = getarch ()
12710
762d10c77277 maint: use libdir for .oct files, not libexecdir
John W. Eaton <jwe@octave.org>
parents: 12642
diff changeset
2257 persistent _arch = cstrcat (octave_config_info ("canonical_host_type"),
762d10c77277 maint: use libdir for .oct files, not libexecdir
John W. Eaton <jwe@octave.org>
parents: 12642
diff changeset
2258 "-", octave_config_info ("api_version"));
6614
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
2259 arch = _arch;
3a53d0f3e0e4 [project @ 2007-05-12 05:50:03 by dbateman]
dbateman
parents: 6500
diff changeset
2260 endfunction
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2261
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2262 function archprefix = getarchprefix (desc, global_install)
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2263 if ((nargin == 2 && global_install) || (nargin < 2 && issuperuser ()))
12710
762d10c77277 maint: use libdir for .oct files, not libexecdir
John W. Eaton <jwe@octave.org>
parents: 12642
diff changeset
2264 archprefix = fullfile (octave_config_info ("libdir"), "octave",
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2265 "packages", cstrcat(desc.name, "-", desc.version));
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2266 else
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2267 archprefix = desc.dir;
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2268 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2269 endfunction
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2270
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2271 function archdir = getarchdir (desc)
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2272 archdir = fullfile (desc.archprefix, getarch());
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2273 endfunction
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2274
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2275 function s = issuperuser ()
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2276 if ((ispc () && ! isunix ()) || (geteuid() == 0))
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2277 s = true;
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2278 else
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2279 s = false;
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2280 endif
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2281 endfunction
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2282
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2283 function [status, output] = shell (cmd)
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2284 persistent have_sh;
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2285
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2286 cmd = strrep (cmd, "\\", "/");
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2287 if (ispc () && ! isunix ())
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2288 if (isempty(have_sh))
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2289 if (system("sh.exe -c \"exit\""))
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2290 have_sh = false;
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2291 else
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2292 have_sh = true;
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2293 endif
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2294 endif
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2295 if (have_sh)
7540
3422f39573b1 strcat.m: Matlab compatibility, with cstrcat.m replacing conventional strcat.m.
Ben Abbott <bpabbott@mac.com>
parents: 7498
diff changeset
2296 [status, output] = system (cstrcat ("sh.exe -c \"", cmd, "\""));
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2297 else
11589
b0084095098e missing semicolons in script files
John W. Eaton <jwe@octave.org>
parents: 11588
diff changeset
2298 error ("Can not find the command shell");
6645
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2299 endif
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2300 else
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2301 [status, output] = system (cmd);
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2302 endif
81eb28d50cee [project @ 2007-05-21 21:05:54 by dbateman]
dbateman
parents: 6634
diff changeset
2303 endfunction
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2304
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2305 function newdesc = save_order (desc)
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2306 newdesc = {};
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2307 for i = 1 : length(desc)
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2308 deps = desc{i}.depends;
11149
fe3c3dfc07eb style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
2309 if (isempty (deps)
fe3c3dfc07eb style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
2310 || (length (deps) == 1 && strcmp(deps{1}.package, "octave")))
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2311 newdesc {end + 1} = desc{i};
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2312 else
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2313 tmpdesc = {};
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2314 for k = 1 : length (deps)
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2315 for j = 1 : length (desc)
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2316 if (strcmp (desc{j}.name, deps{k}.package))
7208
a730e47fda4d [project @ 2007-11-28 02:32:41 by jwe]
jwe
parents: 7192
diff changeset
2317 tmpdesc{end+1} = desc{j};
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2318 break;
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2319 endif
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2320 endfor
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2321 endfor
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
2322 if (! isempty (tmpdesc))
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2323 newdesc = {newdesc{:}, save_order(tmpdesc){:}, desc{i}};
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2324 else
7208
a730e47fda4d [project @ 2007-11-28 02:32:41 by jwe]
jwe
parents: 7192
diff changeset
2325 newdesc{end+1} = desc{i};
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2326 endif
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2327 endif
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2328 endfor
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2329 ## Eliminate the duplicates.
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2330 idx = [];
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2331 for i = 1 : length (newdesc)
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2332 for j = (i + 1) : length (newdesc)
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2333 if (strcmp (newdesc{i}.name, newdesc{j}.name))
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2334 idx (end + 1) = j;
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2335 endif
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2336 endfor
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2337 endfor
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2338 newdesc(idx) = [];
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2339 endfunction
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2340
6925
1401a79af68c [project @ 2007-09-26 18:58:52 by dbateman]
dbateman
parents: 6820
diff changeset
2341 function load_packages_and_dependencies (idx, handle_deps, installed_pkgs_lst,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2342 global_install)
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2343 idx = load_package_dirs (idx, [], handle_deps, installed_pkgs_lst);
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2344 dirs = {};
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2345 execpath = EXEC_PATH ();
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2346 for i = idx;
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2347 ndir = installed_pkgs_lst{i}.dir;
7208
a730e47fda4d [project @ 2007-11-28 02:32:41 by jwe]
jwe
parents: 7192
diff changeset
2348 dirs{end+1} = ndir;
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2349 if (exist (fullfile (dirs{end}, "bin"), "dir"))
11300
4ecc7bc5bc83 search PATH from environment for programs, not EXEC_PATH
John W. Eaton <jwe@octave.org>
parents: 11191
diff changeset
2350 execpath = cstrcat (execpath, pathsep (), fullfile (dirs{end}, "bin"));
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2351 endif
7208
a730e47fda4d [project @ 2007-11-28 02:32:41 by jwe]
jwe
parents: 7192
diff changeset
2352 tmpdir = getarchdir (installed_pkgs_lst{i});
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2353 if (exist (tmpdir, "dir"))
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2354 dirs{end + 1} = tmpdir;
6950
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2355 if (exist (fullfile (dirs{end}, "bin"), "dir"))
11300
4ecc7bc5bc83 search PATH from environment for programs, not EXEC_PATH
John W. Eaton <jwe@octave.org>
parents: 11191
diff changeset
2356 execpath = cstrcat (execpath, pathsep (), fullfile (dirs{end}, "bin"));
6950
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2357 endif
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2358 endif
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2359 endfor
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2360
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2361 ## Load the packages.
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2362 if (length (dirs) > 0)
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2363 addpath (dirs{:});
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2364 endif
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2365
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8455
diff changeset
2366 ## Add the binaries to exec_path.
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2367 if (! strcmp (EXEC_PATH, execpath))
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2368 EXEC_PATH (execpath);
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2369 endif
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2370 endfunction
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2371
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2372 function idx = load_package_dirs (lidx, idx, handle_deps, installed_pkgs_lst)
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2373 for i = lidx
11149
fe3c3dfc07eb style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
2374 if (isfield (installed_pkgs_lst{i}, "loaded")
fe3c3dfc07eb style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
2375 && installed_pkgs_lst{i}.loaded)
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2376 continue;
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2377 else
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2378 if (handle_deps)
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2379 deps = installed_pkgs_lst{i}.depends;
11149
fe3c3dfc07eb style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
2380 if ((length (deps) > 1)
fe3c3dfc07eb style fix: break lines before && and ||, not after
John W. Eaton <jwe@octave.org>
parents: 10846
diff changeset
2381 || (length (deps) == 1 && ! strcmp(deps{1}.package, "octave")))
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2382 tmplidx = [];
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2383 for k = 1 : length (deps)
6820
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2384 for j = 1 : length (installed_pkgs_lst)
65d0fa83261a [project @ 2007-08-23 16:14:51 by jwe]
jwe
parents: 6776
diff changeset
2385 if (strcmp (installed_pkgs_lst{j}.name, deps{k}.package))
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2386 tmplidx (end + 1) = j;
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2387 break;
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2388 endif
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2389 endfor
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2390 endfor
11587
c792872f8942 all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents: 11547
diff changeset
2391 idx = load_package_dirs (tmplidx, idx, handle_deps,
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2392 installed_pkgs_lst);
6695
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2393 endif
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2394 endif
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2395 if (isempty (find(idx == i)))
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2396 idx (end + 1) = i;
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2397 endif
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2398 endif
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2399 endfor
c45431c845f3 [project @ 2007-06-07 21:30:39 by dbateman]
dbateman
parents: 6687
diff changeset
2400 endfunction
6950
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2401
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2402 function dep = is_architecture_dependent (nm)
7329
bf3fb3477d2a [project @ 2007-12-20 16:55:26 by jwe]
jwe
parents: 7208
diff changeset
2403 persistent archdepsuffix = {".oct",".mex",".a",".lib",".so",".so.*",".dll","dylib"};
6950
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2404
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2405 dep = false;
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2406 for i = 1 : length (archdepsuffix)
7208
a730e47fda4d [project @ 2007-11-28 02:32:41 by jwe]
jwe
parents: 7192
diff changeset
2407 ext = archdepsuffix{i};
6950
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2408 if (ext(end) == "*")
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2409 isglob = true;
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2410 ext(end) = [];
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2411 else
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2412 isglob = false;
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2413 endif
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2414 pos = findstr (nm, ext);
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2415 if (pos)
7208
a730e47fda4d [project @ 2007-11-28 02:32:41 by jwe]
jwe
parents: 7192
diff changeset
2416 if (! isglob && (length(nm) - pos(end) != length(ext) - 1))
10549
95c3e38098bf Untabify .m scripts
Rik <code@nomad.inbox5.com>
parents: 10401
diff changeset
2417 continue;
6950
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2418 endif
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2419 dep = true;
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2420 break;
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2421 endif
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2422 endfor
4fa8d8a804fb [project @ 2007-10-03 19:46:26 by dbateman]
dbateman
parents: 6937
diff changeset
2423 endfunction
10684
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
2424
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
2425 function [url, local_file] = get_forge_download (name)
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
2426 [ver, url] = get_forge_pkg (name);
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
2427 local_file = [name, "-", ver, ".tar.gz"];
76aba4305f1f support pkg install -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10549
diff changeset
2428 endfunction
10685
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2429
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2430 function list = list_forge_packages ()
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2431 [list, succ] = urlread ("http://octave.sourceforge.net/list_packages.php");
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2432 if (succ)
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2433 list = strsplit (list, " \n\t", true);
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2434 else
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2435 error ("pkg: could not read URL, please verify internet connection");
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2436 endif
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2437 if (nargout == 0)
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2438 page_screen_output (false, "local");
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2439 puts ("OctaveForge provides these packages:\n");
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2440 for i = 1:length (list)
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2441 try
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2442 ver = get_forge_pkg (list{i});
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2443 catch
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2444 ver = "unknown";
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2445 end_try_catch
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2446 printf (" %s %s\n", list{i}, ver);
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2447 endfor
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2448 endif
81a43049dee2 support pkg list -forge
Jaroslav Hajek <highegg@gmail.com>
parents: 10684
diff changeset
2449 endfunction