annotate scripts/pkg/private/install.m @ 28568:5a07c798eb08

avoid function call input or output argument number mismatch Don't call functions with more inputs or outputs than they are defined to accept. For example, always define graphics callback functions to accept at least two arguments. To avoid creating unused variable names, they may be defined as ignored (~). * importdata.m: Call fileparts with three outputs, not four. * inputParser.m: Define default validation function with ignored input. * odemergeopts.m: Accept additional SOLVER argument. * annotation.m, legend.m, movfun.m, bug-55321.tst: Define callback functions with two inputs. * annotation.m (addbasemenu): Also accept varargin. * graphics.cc: Fix tests. * pkg/private/install.m: Don't pass extra global_install argument to getarchdir. * sparse/private/__alltohandles__.m: Define function handles with two inputs where needed.
author John W. Eaton <jwe@octave.org>
date Sat, 11 Jul 2020 10:15:57 -0400
parents 9cb04a9e81ec
children 72d57dbcc305
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27928
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27924
diff changeset
1 ########################################################################
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27924
diff changeset
2 ##
27924
1891570abac8 update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 27923
diff changeset
3 ## Copyright (C) 2005-2020 The Octave Project Developers
27923
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 27814
diff changeset
4 ##
27928
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27924
diff changeset
5 ## See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27924
diff changeset
6 ## distribution or <https://octave.org/copyright/>.
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
7 ##
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
8 ## This file is part of Octave.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
9 ##
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24013
diff changeset
10 ## Octave is free software: you can redistribute it and/or modify it
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
11 ## under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24013
diff changeset
12 ## the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
13 ## (at your option) any later version.
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
14 ##
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
15 ## Octave is distributed in the hope that it will be useful, but
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
18 ## GNU General Public License for more details.
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
19 ##
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
20 ## You should have received a copy of the GNU General Public License
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
21 ## along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24013
diff changeset
22 ## <https://www.gnu.org/licenses/>.
27928
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27924
diff changeset
23 ##
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27924
diff changeset
24 ########################################################################
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
25
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
26 ## -*- texinfo -*-
21624
cf227735d5fd pkg: remove support for autoload (automatically loading package at start).
Carnë Draug <carandraug@octave.org>
parents: 21615
diff changeset
27 ## @deftypefn {} {} install (@var{files}, @var{handle_deps}, @var{prefix}, @var{archprefix}, @var{verbose}, @var{local_list}, @var{global_list}, @var{global_install})
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
28 ## Undocumented internal function.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
29 ## @end deftypefn
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
30
21624
cf227735d5fd pkg: remove support for autoload (automatically loading package at start).
Carnë Draug <carandraug@octave.org>
parents: 21615
diff changeset
31 function install (files, handle_deps, prefix, archprefix, verbose,
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
32 local_list, global_list, global_install)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
33
21751
b571fc85953f maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents: 21634
diff changeset
34 ## Check that the directory in prefix exist. If it doesn't: create it!
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
35 if (! isfolder (prefix))
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
36 warning ("creating installation directory %s", prefix);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
37 [status, msg] = mkdir (prefix);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
38 if (status != 1)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
39 error ("could not create installation directory: %s", msg);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
40 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
41 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
42
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
43 ## Get the list of installed packages.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
44 [local_packages, global_packages] = installed_packages (local_list,
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
45 global_list);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
46
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
47 installed_pkgs_lst = {local_packages{:}, global_packages{:}};
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
48
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
49 if (global_install)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
50 packages = global_packages;
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
51 else
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
52 packages = local_packages;
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
53 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
54
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
55 ## Uncompress the packages and read the DESCRIPTION files.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
56 tmpdirs = packdirs = descriptions = {};
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
57 try
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
58 ## Warn about non existent files.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
59 for i = 1:length (files)
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
60 if (isempty (glob (files{i})))
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
61 warning ("file %s does not exist", files{i});
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
62 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
63 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
64
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
65 ## Unpack the package files and read the DESCRIPTION files.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
66 files = glob (files);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
67 packages_to_uninstall = [];
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
68 for i = 1:length (files)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
69 tgz = files{i};
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
70
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
71 if (exist (tgz, "file"))
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
72 ## Create a temporary directory.
19278
6ca096827123 Use tempname() rather than tmpnam() in core Octave.
Rik <rik@octave.org>
parents: 17744
diff changeset
73 tmpdir = tempname ();
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
74 tmpdirs{end+1} = tmpdir;
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
75 if (verbose)
21634
96518f623c91 Backed out changeset dcf8922b724b
Mike Miller <mtmiller@octave.org>
parents: 21633
diff changeset
76 printf ("mkdir (%s)\n", tmpdir);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
77 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
78 [status, msg] = mkdir (tmpdir);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
79 if (status != 1)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
80 error ("couldn't create temporary directory: %s", msg);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
81 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
82
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
83 ## Uncompress the package.
26816
0dd5b293b18c pkg.m: restore installing packages from zip archives (bug #55788)
Mike Miller <mtmiller@octave.org>
parents: 26379
diff changeset
84 [~, ~, ext] = fileparts (tgz);
0dd5b293b18c pkg.m: restore installing packages from zip archives (bug #55788)
Mike Miller <mtmiller@octave.org>
parents: 26379
diff changeset
85 if (strcmpi (ext, ".zip"))
0dd5b293b18c pkg.m: restore installing packages from zip archives (bug #55788)
Mike Miller <mtmiller@octave.org>
parents: 26379
diff changeset
86 func_uncompress = @unzip;
0dd5b293b18c pkg.m: restore installing packages from zip archives (bug #55788)
Mike Miller <mtmiller@octave.org>
parents: 26379
diff changeset
87 else
0dd5b293b18c pkg.m: restore installing packages from zip archives (bug #55788)
Mike Miller <mtmiller@octave.org>
parents: 26379
diff changeset
88 func_uncompress = @untar;
0dd5b293b18c pkg.m: restore installing packages from zip archives (bug #55788)
Mike Miller <mtmiller@octave.org>
parents: 26379
diff changeset
89 endif
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
90 if (verbose)
26816
0dd5b293b18c pkg.m: restore installing packages from zip archives (bug #55788)
Mike Miller <mtmiller@octave.org>
parents: 26379
diff changeset
91 printf ("%s (%s, %s)\n", func2str (func_uncompress), tgz, tmpdir);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
92 endif
26816
0dd5b293b18c pkg.m: restore installing packages from zip archives (bug #55788)
Mike Miller <mtmiller@octave.org>
parents: 26379
diff changeset
93 func_uncompress (tgz, tmpdir);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
94
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
95 ## Get the name of the directories produced by tar.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
96 [dirlist, err, msg] = readdir (tmpdir);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
97 if (err)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
98 error ("couldn't read directory produced by tar: %s", msg);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
99 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
100
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
101 if (length (dirlist) > 3)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
102 error ("bundles of packages are not allowed");
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
103 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
104 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
105
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
106 ## The filename pointed to an uncompressed package to begin with.
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
107 if (isfolder (tgz))
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
108 dirlist = {".", "..", tgz};
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
109 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
110
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
111 if (exist (tgz, "file") || isfolder (tgz))
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
112 ## The two first entries of dirlist are "." and "..".
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
113 if (exist (tgz, "file"))
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
114 packdir = fullfile (tmpdir, dirlist{3});
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
115 else
14846
460a3c6d8bf1 maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents: 14517
diff changeset
116 packdir = fullfile (pwd (), dirlist{3});
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
117 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
118 packdirs{end+1} = packdir;
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
119
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
120 ## Make sure the package contains necessary files.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
121 verify_directory (packdir);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
122
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
123 ## Read the DESCRIPTION file.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
124 filename = fullfile (packdir, "DESCRIPTION");
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
125 desc = get_description (filename);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
126
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
127 ## Set default installation directory.
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16467
diff changeset
128 desc.dir = fullfile (prefix, [desc.name "-" desc.version]);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
129
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
130 ## Set default architectire dependent installation directory.
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16467
diff changeset
131 desc.archprefix = fullfile (archprefix, [desc.name "-" desc.version]);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
132
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
133 ## Save desc.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
134 descriptions{end+1} = desc;
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
135
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
136 ## Are any of the new packages already installed?
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
137 ## If so we'll remove the old version.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
138 for j = 1:length (packages)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
139 if (strcmp (packages{j}.name, desc.name))
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
140 packages_to_uninstall(end+1) = j;
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
141 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
142 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
143 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
144 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
145 catch
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
146 ## Something went wrong, delete tmpdirs.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
147 for i = 1:length (tmpdirs)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
148 sts = rmdir (tmpdirs{i}, "s");
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
149 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
150 rethrow (lasterror ());
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
151 end_try_catch
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
152
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
153 ## Check dependencies.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
154 if (handle_deps)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
155 ok = true;
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
156 error_text = "";
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
157 for i = 1:length (descriptions)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
158 desc = descriptions{i};
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
159 idx2 = setdiff (1:length (descriptions), i);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
160 if (global_install)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
161 ## Global installation is not allowed to have dependencies on locally
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
162 ## installed packages.
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
163 idx1 = setdiff (1:length (global_packages), packages_to_uninstall);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
164 pseudo_installed_packages = {global_packages{idx1}, ...
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
165 descriptions{idx2}};
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
166 else
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
167 idx1 = setdiff (1:length (local_packages), packages_to_uninstall);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
168 pseudo_installed_packages = {local_packages{idx1}, ...
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
169 global_packages{:}, ...
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
170 descriptions{idx2}};
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
171 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
172 bad_deps = get_unsatisfied_deps (desc, pseudo_installed_packages);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
173 ## Are there any unsatisfied dependencies?
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
174 if (! isempty (bad_deps))
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
175 ok = false;
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
176 for i = 1:length (bad_deps)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
177 dep = bad_deps{i};
16994
333243133364 Use matrix concatenation for strings, rather than cstrcat(), for clarity and performance.
Rik <rik@octave.org>
parents: 16467
diff changeset
178 error_text = [error_text " " desc.name " needs " ...
17016
a3f6790df115 Fix typos from cstrcat to matrix concatenation changeset (333243133364).
Rik <rik@octave.org>
parents: 16994
diff changeset
179 dep.package " " dep.operator " " dep.version "\n"];
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
180 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
181 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
182 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
183
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
184 ## Did we find any unsatisfied dependencies?
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
185 if (! ok)
16467
cc9e2751e073 pkg: Typo correction
Adam H Aitkenhead <adamhaitkenhead@gmail.com>
parents: 14868
diff changeset
186 error ("the following dependencies were unsatisfied:\n %s", error_text);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
187 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
188 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
189
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
190 ## Prepare each package for installation.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
191 try
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
192 for i = 1:length (descriptions)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
193 desc = descriptions{i};
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
194 pdir = packdirs{i};
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
195 prepare_installation (desc, pdir);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
196 configure_make (desc, pdir, verbose);
21518
2ee20a290d61 pkg build: complete rewrite of the logic behind binary packages.
Carnë Draug <carandraug@octave.org>
parents: 20852
diff changeset
197 copy_built_files (desc, pdir, verbose);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
198 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
199 catch
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
200 ## Something went wrong, delete tmpdirs.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
201 for i = 1:length (tmpdirs)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
202 sts = rmdir (tmpdirs{i}, "s");
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
203 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
204 rethrow (lasterror ());
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
205 end_try_catch
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
206
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
207 ## Uninstall the packages that will be replaced.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
208 try
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
209 for i = packages_to_uninstall
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
210 if (global_install)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
211 uninstall ({global_packages{i}.name}, false, verbose, local_list,
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
212 global_list, global_install);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
213 else
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
214 uninstall ({local_packages{i}.name}, false, verbose, local_list,
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
215 global_list, global_install);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
216 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
217 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
218 catch
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
219 ## Something went wrong, delete tmpdirs.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
220 for i = 1:length (tmpdirs)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
221 sts = rmdir (tmpdirs{i}, "s");
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
222 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
223 rethrow (lasterror ());
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
224 end_try_catch
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
225
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
226 ## Install each package.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
227 try
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
228 for i = 1:length (descriptions)
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
229 desc = descriptions{i};
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
230 pdir = packdirs{i};
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
231 copy_files (desc, pdir, global_install);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
232 create_pkgadddel (desc, pdir, "PKG_ADD", global_install);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
233 create_pkgadddel (desc, pdir, "PKG_DEL", global_install);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
234 finish_installation (desc, pdir, global_install);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
235 generate_lookfor_cache (desc);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
236 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
237 catch
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
238 ## Something went wrong, delete tmpdirs.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
239 for i = 1:length (tmpdirs)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
240 sts = rmdir (tmpdirs{i}, "s");
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
241 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
242 for i = 1:length (descriptions)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
243 sts = rmdir (descriptions{i}.dir, "s");
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
244 sts = rmdir (getarchdir (descriptions{i}), "s");
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
245 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
246 rethrow (lasterror ());
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
247 end_try_catch
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
248
21751
b571fc85953f maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents: 21634
diff changeset
249 ## Check if the installed directory is empty. If it is remove it
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
250 ## from the list.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
251 for i = length (descriptions):-1:1
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
252 if (dirempty (descriptions{i}.dir, {"packinfo", "doc"})
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
253 && dirempty (getarchdir (descriptions{i})))
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
254 warning ("package %s is empty\n", descriptions{i}.name);
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
255 sts = rmdir (descriptions{i}.dir, "s");
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
256 sts = rmdir (getarchdir (descriptions{i}), "s");
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
257 descriptions(i) = [];
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
258 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
259 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
260
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
261 ## Add the packages to the package list.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
262 try
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
263 if (global_install)
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
264 idx = setdiff (1:length (global_packages), packages_to_uninstall);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
265 global_packages = save_order ({global_packages{idx}, descriptions{:}});
27578
0cedd1e23c1f Adapt path styles for pkg.m on Windows (bug #57083)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 27574
diff changeset
266 if (ispc)
0cedd1e23c1f Adapt path styles for pkg.m on Windows (bug #57083)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 27574
diff changeset
267 ## On Windows ensure LFN paths are saved rather than 8.3 style paths
0cedd1e23c1f Adapt path styles for pkg.m on Windows (bug #57083)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 27574
diff changeset
268 global_packages = standardize_paths (global_packages);
0cedd1e23c1f Adapt path styles for pkg.m on Windows (bug #57083)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 27574
diff changeset
269 endif
27712
377f069841c1 Make packages installation dirs in global octave_packages file relative
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 27578
diff changeset
270 global_packages = make_rel_paths (global_packages);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
271 save (global_list, "global_packages");
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
272 installed_pkgs_lst = {local_packages{:}, global_packages{:}};
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
273 else
14868
5d3a684236b0 maint: Use Octave coding conventions for cuddling parentheses in scripts directory
Rik <octave@nomad.inbox5.com>
parents: 14846
diff changeset
274 idx = setdiff (1:length (local_packages), packages_to_uninstall);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
275 local_packages = save_order ({local_packages{idx}, descriptions{:}});
27578
0cedd1e23c1f Adapt path styles for pkg.m on Windows (bug #57083)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 27574
diff changeset
276 if (ispc)
0cedd1e23c1f Adapt path styles for pkg.m on Windows (bug #57083)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 27574
diff changeset
277 local_packages = standardize_paths (local_packages);
0cedd1e23c1f Adapt path styles for pkg.m on Windows (bug #57083)
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 27574
diff changeset
278 endif
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
279 save (local_list, "local_packages");
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
280 installed_pkgs_lst = {local_packages{:}, global_packages{:}};
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
281 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
282 catch
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
283 ## Something went wrong, delete tmpdirs.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
284 for i = 1:length (tmpdirs)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
285 sts = rmdir (tmpdirs{i}, "s");
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
286 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
287 for i = 1:length (descriptions)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
288 sts = rmdir (descriptions{i}.dir, "s");
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
289 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
290 if (global_install)
21634
96518f623c91 Backed out changeset dcf8922b724b
Mike Miller <mtmiller@octave.org>
parents: 21633
diff changeset
291 printf ("error: couldn't append to %s\n", global_list);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
292 else
21634
96518f623c91 Backed out changeset dcf8922b724b
Mike Miller <mtmiller@octave.org>
parents: 21633
diff changeset
293 printf ("error: couldn't append to %s\n", local_list);
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
294 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
295 rethrow (lasterror ());
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
296 end_try_catch
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
297
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
298 ## All is well, let's clean up.
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
299 for i = 1:length (tmpdirs)
14471
d2c095e45196 maint: Remove redundant private function from the package manager.
Carlo de Falco <kingcrimson@tiscali.it>
parents: 14470
diff changeset
300 [status, msg] = rmdir (tmpdirs{i}, "s");
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
301 if (status != 1 && isfolder (tmpdirs{i}))
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
302 warning ("couldn't clean up after my self: %s\n", msg);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
303 endif
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
304 endfor
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
305
19833
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
306 ## If there is a NEWS file, mention it.
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
307 ## Check if desc exists too because it's possible to get to this point
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
308 ## without creating it such as giving an invalid filename for the package
19833
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
309 if (exist ("desc", "var")
9fc020886ae9 maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents: 19697
diff changeset
310 && exist (fullfile (desc.dir, "packinfo", "NEWS"), "file"))
24967
183dc284783a pkg/private/install.m: make code 80 characters long
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 24534
diff changeset
311 printf (["For information about changes from previous versions " ...
183dc284783a pkg/private/install.m: make code 80 characters long
Juan Pablo Carbajal <ajuanpi+dev@gmail.com>
parents: 24534
diff changeset
312 "of the %s package, run 'news %s'.\n"],
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
313 desc.name, desc.name);
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
314 endif
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
315
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
316 endfunction
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
317
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
318
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
319 function pkg = extract_pkg (nm, pat)
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
320
27814
b6db1c7c4595 Create valid UTF-8 from .m file content when installing package (bug #57395).
Markus Mützel <markus.muetzel@gmx.de>
parents: 27712
diff changeset
321 mfile_encoding = __mfile_encoding__ ();
b6db1c7c4595 Create valid UTF-8 from .m file content when installing package (bug #57395).
Markus Mützel <markus.muetzel@gmx.de>
parents: 27712
diff changeset
322 if (strcmp (mfile_encoding, "system"))
b6db1c7c4595 Create valid UTF-8 from .m file content when installing package (bug #57395).
Markus Mützel <markus.muetzel@gmx.de>
parents: 27712
diff changeset
323 mfile_encoding = __locale_charset__ ();
b6db1c7c4595 Create valid UTF-8 from .m file content when installing package (bug #57395).
Markus Mützel <markus.muetzel@gmx.de>
parents: 27712
diff changeset
324 endif
b6db1c7c4595 Create valid UTF-8 from .m file content when installing package (bug #57395).
Markus Mützel <markus.muetzel@gmx.de>
parents: 27712
diff changeset
325 fid = fopen (nm, "rt", "n", mfile_encoding);
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
326 pkg = "";
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
327 if (fid >= 0)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
328 while (! feof (fid))
27814
b6db1c7c4595 Create valid UTF-8 from .m file content when installing package (bug #57395).
Markus Mützel <markus.muetzel@gmx.de>
parents: 27712
diff changeset
329 ln = __u8_validate__ (fgetl (fid));
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
330 if (ln > 0)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
331 t = regexp (ln, pat, "tokens");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
332 if (! isempty (t))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
333 pkg = [pkg "\n" t{1}{1}];
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
334 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
335 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
336 endwhile
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
337 if (! isempty (pkg))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
338 pkg = [pkg "\n"];
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
339 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
340 fclose (fid);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
341 endif
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
342
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
343 endfunction
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
344
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
345
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
346 ## Make sure the package contains the essential files.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
347 function verify_directory (dir)
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
348
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
349 needed_files = {"COPYING", "DESCRIPTION"};
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
350 for f = needed_files
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
351 if (! exist (fullfile (dir, f{1}), "file"))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
352 error ("package is missing file: %s", f{1});
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
353 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
354 endfor
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
355
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
356 endfunction
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
357
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
358
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
359 function prepare_installation (desc, packdir)
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
360
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
361 ## Is there a pre_install to call?
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
362 if (exist (fullfile (packdir, "pre_install.m"), "file"))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
363 wd = pwd ();
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
364 try
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
365 cd (packdir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
366 pre_install (desc);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
367 cd (wd);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
368 catch
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
369 cd (wd);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
370 rethrow (lasterror ());
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
371 end_try_catch
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
372 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
373
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
374 ## If the directory "inst" doesn't exist, we create it.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
375 inst_dir = fullfile (packdir, "inst");
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
376 if (! isfolder (inst_dir))
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
377 [status, msg] = mkdir (inst_dir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
378 if (status != 1)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
379 sts = rmdir (desc.dir, "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
380 error ("the 'inst' directory did not exist and could not be created: %s",
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
381 msg);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
382 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
383 endif
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
384
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
385 endfunction
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
386
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
387
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
388 function copy_built_files (desc, packdir, verbose)
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
389
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
390 src = fullfile (packdir, "src");
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
391 if (! isfolder (src))
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
392 return
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
393 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
394
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
395 ## Copy files to "inst" and "inst/arch" (this is instead of 'make install').
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
396 files = fullfile (src, "FILES");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
397 instdir = fullfile (packdir, "inst");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
398 archdir = fullfile (packdir, "inst", getarch ());
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
399
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
400 ## Get filenames.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
401 if (exist (files, "file"))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
402 [fid, msg] = fopen (files, "r");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
403 if (fid < 0)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
404 error ("couldn't open %s: %s", files, msg);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
405 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
406 filenames = char (fread (fid))';
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
407 fclose (fid);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
408 if (filenames(end) == "\n")
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
409 filenames(end) = [];
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
410 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
411 filenames = strtrim (ostrsplit (filenames, "\n"));
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
412 delete_idx = [];
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
413 for i = 1:length (filenames)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
414 if (! all (isspace (filenames{i})))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
415 filenames{i} = fullfile (src, filenames{i});
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
416 else
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
417 delete_idx(end+1) = i;
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
418 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
419 endfor
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
420 filenames(delete_idx) = [];
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
421 else
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
422 m = dir (fullfile (src, "*.m"));
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
423 oct = dir (fullfile (src, "*.oct"));
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
424 mex = dir (fullfile (src, "*.mex"));
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
425
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
426 filenames = cellfun (@(x) fullfile (src, x),
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
427 {m.name, oct.name, mex.name},
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
428 "uniformoutput", false);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
429 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
430
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
431 ## Split into architecture dependent and independent files.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
432 if (isempty (filenames))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
433 idx = [];
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
434 else
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
435 idx = cellfun ("is_architecture_dependent", filenames);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
436 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
437 archdependent = filenames(idx);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
438 archindependent = filenames(! idx);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
439
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
440 ## Copy the files.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
441 if (! all (isspace ([filenames{:}])))
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
442 if (! isfolder (instdir))
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
443 mkdir (instdir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
444 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
445 if (! all (isspace ([archindependent{:}])))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
446 if (verbose)
21634
96518f623c91 Backed out changeset dcf8922b724b
Mike Miller <mtmiller@octave.org>
parents: 21633
diff changeset
447 printf ("copyfile");
96518f623c91 Backed out changeset dcf8922b724b
Mike Miller <mtmiller@octave.org>
parents: 21633
diff changeset
448 printf (" %s", archindependent{:});
96518f623c91 Backed out changeset dcf8922b724b
Mike Miller <mtmiller@octave.org>
parents: 21633
diff changeset
449 printf ("%s\n", instdir);
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
450 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
451 [status, output] = copyfile (archindependent, instdir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
452 if (status != 1)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
453 sts = rmdir (desc.dir, "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
454 error ("Couldn't copy files from 'src' to 'inst': %s", output);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
455 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
456 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
457 if (! all (isspace ([archdependent{:}])))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
458 if (verbose)
21634
96518f623c91 Backed out changeset dcf8922b724b
Mike Miller <mtmiller@octave.org>
parents: 21633
diff changeset
459 printf ("copyfile");
96518f623c91 Backed out changeset dcf8922b724b
Mike Miller <mtmiller@octave.org>
parents: 21633
diff changeset
460 printf (" %s", archdependent{:});
96518f623c91 Backed out changeset dcf8922b724b
Mike Miller <mtmiller@octave.org>
parents: 21633
diff changeset
461 printf (" %s\n", archdir);
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
462 endif
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
463 if (! isfolder (archdir))
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
464 mkdir (archdir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
465 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
466 [status, output] = copyfile (archdependent, archdir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
467 if (status != 1)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
468 sts = rmdir (desc.dir, "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
469 error ("Couldn't copy files from 'src' to 'inst': %s", output);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
470 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
471 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
472 endif
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
473
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
474 endfunction
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
475
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
476
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
477 function dep = is_architecture_dependent (nm)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
478 persistent archdepsuffix = {".oct",".mex",".a",".lib",".so",".so.*",".dll","dylib"};
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
479
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
480 dep = false;
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
481 for i = 1 : length (archdepsuffix)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
482 ext = archdepsuffix{i};
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
483 if (ext(end) == "*")
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
484 isglob = true;
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
485 ext(end) = [];
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
486 else
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
487 isglob = false;
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
488 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
489 pos = strfind (nm, ext);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
490 if (pos)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
491 if (! isglob && (length (nm) - pos(end) != length (ext) - 1))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
492 continue;
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
493 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
494 dep = true;
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
495 break;
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
496 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
497 endfor
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
498
14466
cfb0173fe1ca maint: Refactor pkg.m and move subfunctions to private/ directory.
Carlo de Falco <kingcrimson@tiscali.it>
parents:
diff changeset
499 endfunction
17338
1c89599167a6 maint: End m-files with 1 blank line.
Rik <rik@octave.org>
parents: 17016
diff changeset
500
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
501
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
502 function copy_files (desc, packdir, global_install)
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
503
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
504 ## Create the installation directory.
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
505 if (! isfolder (desc.dir))
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
506 [status, output] = mkdir (desc.dir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
507 if (status != 1)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
508 error ("couldn't create installation directory %s : %s",
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
509 desc.dir, output);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
510 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
511 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
512
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
513 octfiledir = getarchdir (desc);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
514
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
515 ## Copy the files from "inst" to installdir.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
516 instdir = fullfile (packdir, "inst");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
517 if (! dirempty (instdir))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
518 [status, output] = copyfile (fullfile (instdir, "*"), desc.dir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
519 if (status != 1)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
520 sts = rmdir (desc.dir, "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
521 error ("couldn't copy files to the installation directory");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
522 endif
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
523 if (isfolder (fullfile (desc.dir, getarch ()))
27574
29ccef7e5295 New function "is_same_file".
Markus Mützel <markus.muetzel@gmx.de>
parents: 26816
diff changeset
524 && ! is_same_file (fullfile (desc.dir, getarch ()), octfiledir))
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
525 if (! isfolder (octfiledir))
24013
26ec2e264826 Fix installing pkgs into a symlinked dir (bug #50994).
Rik <rik@octave.org>
parents: 23220
diff changeset
526 ## Can be required to create up to three levels of dirs.
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
527 octm1 = fileparts (octfiledir);
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
528 if (! isfolder (octm1))
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
529 octm2 = fileparts (octm1);
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
530 if (! isfolder (octm2))
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
531 octm3 = fileparts (octm2);
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
532 if (! isfolder (octm3))
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
533 [status, output] = mkdir (octm3);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
534 if (status != 1)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
535 sts = rmdir (desc.dir, "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
536 error ("couldn't create installation directory %s : %s",
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
537 octm3, output);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
538 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
539 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
540 [status, output] = mkdir (octm2);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
541 if (status != 1)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
542 sts = rmdir (desc.dir, "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
543 error ("couldn't create installation directory %s : %s",
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
544 octm2, output);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
545 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
546 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
547 [status, output] = mkdir (octm1);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
548 if (status != 1)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
549 sts = rmdir (desc.dir, "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
550 error ("couldn't create installation directory %s : %s",
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
551 octm1, output);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
552 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
553 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
554 [status, output] = mkdir (octfiledir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
555 if (status != 1)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
556 sts = rmdir (desc.dir, "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
557 error ("couldn't create installation directory %s : %s",
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
558 octfiledir, output);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
559 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
560 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
561 [status, output] = movefile (fullfile (desc.dir, getarch (), "*"),
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
562 octfiledir);
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
563 sts = rmdir (fullfile (desc.dir, getarch ()), "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
564
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
565 if (status != 1)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
566 sts = rmdir (desc.dir, "s");
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
567 sts = rmdir (octfiledir, "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
568 error ("couldn't copy files to the installation directory");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
569 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
570 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
571
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
572 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
573
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
574 ## Create the "packinfo" directory.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
575 packinfo = fullfile (desc.dir, "packinfo");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
576 [status, msg] = mkdir (packinfo);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
577 if (status != 1)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
578 sts = rmdir (desc.dir, "s");
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
579 sts = rmdir (octfiledir, "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
580 error ("couldn't create packinfo directory: %s", msg);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
581 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
582
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
583 packinfo_copy_file ("DESCRIPTION", "required", packdir, packinfo, desc, octfiledir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
584 packinfo_copy_file ("COPYING", "required", packdir, packinfo, desc, octfiledir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
585 packinfo_copy_file ("CITATION", "optional", packdir, packinfo, desc, octfiledir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
586 packinfo_copy_file ("NEWS", "optional", packdir, packinfo, desc, octfiledir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
587 packinfo_copy_file ("ONEWS", "optional", packdir, packinfo, desc, octfiledir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
588 packinfo_copy_file ("ChangeLog", "optional", packdir, packinfo, desc, octfiledir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
589
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
590 ## Is there an INDEX file to copy or should we generate one?
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
591 index_file = fullfile (packdir, "INDEX");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
592 if (exist (index_file, "file"))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
593 packinfo_copy_file ("INDEX", "required", packdir, packinfo, desc, octfiledir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
594 else
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
595 try
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
596 write_index (desc, fullfile (packdir, "inst"),
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
597 fullfile (packinfo, "INDEX"), global_install);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
598 catch
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
599 sts = rmdir (desc.dir, "s");
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
600 sts = rmdir (octfiledir, "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
601 rethrow (lasterror ());
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
602 end_try_catch
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
603 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
604
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
605 ## Is there an 'on_uninstall.m' to install?
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
606 packinfo_copy_file ("on_uninstall.m", "optional", packdir, packinfo, desc, octfiledir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
607
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
608 ## Is there a doc/ directory that needs to be installed?
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
609 docdir = fullfile (packdir, "doc");
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
610 if (isfolder (docdir) && ! dirempty (docdir))
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
611 [status, output] = copyfile (docdir, desc.dir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
612 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
613
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
614 ## Is there a bin/ directory that needs to be installed?
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
615 ## FIXME: Need to treat architecture dependent files in bin/
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
616 bindir = fullfile (packdir, "bin");
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
617 if (isfolder (bindir) && ! dirempty (bindir))
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
618 [status, output] = copyfile (bindir, desc.dir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
619 endif
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
620
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
621 endfunction
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
622
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
623
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
624 function packinfo_copy_file (filename, requirement, packdir, packinfo, desc, octfiledir)
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
625
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
626 filepath = fullfile (packdir, filename);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
627 if (! exist (filepath, "file") && strcmpi (requirement, "optional"))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
628 ## do nothing, it's still OK
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
629 else
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
630 [status, output] = copyfile (filepath, packinfo);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
631 if (status != 1)
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
632 sts = rmdir (desc.dir, "s");
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
633 sts = rmdir (octfiledir, "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
634 error ("Couldn't copy %s file: %s", filename, output);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
635 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
636 endif
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
637
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
638 endfunction
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
639
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
640
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
641 ## Create an INDEX file for a package that doesn't provide one.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
642 ## 'desc' describes the package.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
643 ## 'dir' is the 'inst' directory in temporary directory.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
644 ## 'index_file' is the name (including path) of resulting INDEX file.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
645 function write_index (desc, dir, index_file, global_install)
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
646
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
647 ## Get names of functions in dir
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
648 [files, err, msg] = readdir (dir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
649 if (err)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
650 error ("couldn't read directory %s: %s", dir, msg);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
651 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
652
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
653 ## Get classes in dir
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
654 class_idx = find (strncmp (files, '@', 1));
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
655 for k = 1:length (class_idx)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
656 class_name = files {class_idx(k)};
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
657 class_dir = fullfile (dir, class_name);
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
658 if (isfolder (class_dir))
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
659 [files2, err, msg] = readdir (class_dir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
660 if (err)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
661 error ("couldn't read directory %s: %s", class_dir, msg);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
662 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
663 files2 = strcat (class_name, filesep (), files2);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
664 files = [files; files2];
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
665 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
666 endfor
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
667
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
668 ## Check for architecture dependent files.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
669 tmpdir = getarchdir (desc);
25790
3293cd2651fb prefer 'isfolder' over 'exist (..., "dir")' in Octave functions
Mike Miller <mtmiller@octave.org>
parents: 25132
diff changeset
670 if (isfolder (tmpdir))
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
671 [files2, err, msg] = readdir (tmpdir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
672 if (err)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
673 error ("couldn't read directory %s: %s", tmpdir, msg);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
674 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
675 files = [files; files2];
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
676 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
677
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
678 functions = {};
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
679 for i = 1:length (files)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
680 file = files{i};
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
681 lf = length (file);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
682 if (lf > 2 && strcmp (file(end-1:end), ".m"))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
683 functions{end+1} = file(1:end-2);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
684 elseif (lf > 4 && strcmp (file(end-3:end), ".oct"))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
685 functions{end+1} = file(1:end-4);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
686 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
687 endfor
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
688
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
689 ## Does desc have a categories field?
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
690 if (! isfield (desc, "categories"))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
691 error ("the DESCRIPTION file must have a Categories field, when no INDEX file is given");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
692 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
693 categories = strtrim (strsplit (desc.categories, ","));
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
694 if (length (categories) < 1)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
695 error ("the Category field is empty");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
696 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
697
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
698 ## Write INDEX.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
699 fid = fopen (index_file, "w");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
700 if (fid == -1)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
701 error ("couldn't open %s for writing", index_file);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
702 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
703 fprintf (fid, "%s >> %s\n", desc.name, desc.title);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
704 fprintf (fid, "%s\n", categories{1});
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
705 fprintf (fid, " %s\n", functions{:});
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
706 fclose (fid);
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
707
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
708 endfunction
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
709
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
710
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
711 function create_pkgadddel (desc, packdir, nm, global_install)
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
712
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
713 instpkg = fullfile (desc.dir, nm);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
714 instfid = fopen (instpkg, "at"); # append to support PKG_ADD at inst/
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
715 ## If it is exists, most of the PKG_* file should go into the
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
716 ## architecture dependent directory so that the autoload/mfilename
21751
b571fc85953f maint: Use two spaces after period to indicate sentence break.
Rik <rik@octave.org>
parents: 21634
diff changeset
717 ## commands work as expected. The only part that doesn't is the
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
718 ## part in the main directory.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
719 archdir = fullfile (getarchprefix (desc, global_install),
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
720 [desc.name "-" desc.version], getarch ());
28568
5a07c798eb08 avoid function call input or output argument number mismatch
John W. Eaton <jwe@octave.org>
parents: 28092
diff changeset
721 if (isfolder (getarchdir (desc)))
5a07c798eb08 avoid function call input or output argument number mismatch
John W. Eaton <jwe@octave.org>
parents: 28092
diff changeset
722 archpkg = fullfile (getarchdir (desc), nm);
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
723 archfid = fopen (archpkg, "at");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
724 else
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
725 archpkg = instpkg;
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
726 archfid = instfid;
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
727 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
728
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
729 if (archfid >= 0 && instfid >= 0)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
730 ## Search all dot-m files for PKG commands.
23125
ef0909c445df pkg: also search .cpp an .cxx files for PKG directives (bug #50199)
John W. Eaton <jwe@octave.org>
parents: 23084
diff changeset
731 lst = glob (fullfile (packdir, "inst", "*.m"));
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
732 for i = 1:length (lst)
23125
ef0909c445df pkg: also search .cpp an .cxx files for PKG directives (bug #50199)
John W. Eaton <jwe@octave.org>
parents: 23084
diff changeset
733 nam = lst{i};
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
734 fwrite (instfid, extract_pkg (nam, ['^[#%][#%]* *' nm ': *(.*)$']));
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
735 endfor
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
736
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
737 ## Search all C++ source files for PKG commands.
23125
ef0909c445df pkg: also search .cpp an .cxx files for PKG directives (bug #50199)
John W. Eaton <jwe@octave.org>
parents: 23084
diff changeset
738 cc_lst = glob (fullfile (packdir, "src", "*.cc"));
ef0909c445df pkg: also search .cpp an .cxx files for PKG directives (bug #50199)
John W. Eaton <jwe@octave.org>
parents: 23084
diff changeset
739 cpp_lst = glob (fullfile (packdir, "src", "*.cpp"));
ef0909c445df pkg: also search .cpp an .cxx files for PKG directives (bug #50199)
John W. Eaton <jwe@octave.org>
parents: 23084
diff changeset
740 cxx_lst = glob (fullfile (packdir, "src", "*.cxx"));
ef0909c445df pkg: also search .cpp an .cxx files for PKG directives (bug #50199)
John W. Eaton <jwe@octave.org>
parents: 23084
diff changeset
741 lst = [cc_lst; cpp_lst; cxx_lst];
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
742 for i = 1:length (lst)
23125
ef0909c445df pkg: also search .cpp an .cxx files for PKG directives (bug #50199)
John W. Eaton <jwe@octave.org>
parents: 23084
diff changeset
743 nam = lst{i};
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
744 fwrite (archfid, extract_pkg (nam, ['^//* *' nm ': *(.*)$']));
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
745 fwrite (archfid, extract_pkg (nam, ['^/\** *' nm ': *(.*) *\*/$']));
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
746 endfor
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
747
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
748 ## Add developer included PKG commands.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
749 packdirnm = fullfile (packdir, nm);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
750 if (exist (packdirnm, "file"))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
751 fid = fopen (packdirnm, "rt");
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
752 if (fid >= 0)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
753 while (! feof (fid))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
754 ln = fgets (fid);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
755 if (ln > 0)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
756 fwrite (archfid, ln);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
757 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
758 endwhile
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
759 fclose (fid);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
760 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
761 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
762
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
763 ## If the files is empty remove it.
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
764 fclose (instfid);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
765 t = dir (instpkg);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
766 if (t.bytes <= 0)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
767 unlink (instpkg);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
768 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
769
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
770 if (instfid != archfid)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
771 fclose (archfid);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
772 t = dir (archpkg);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
773 if (t.bytes <= 0)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
774 unlink (archpkg);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
775 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
776 endif
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
777 endif
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
778
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
779 endfunction
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
780
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
781
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
782 function archprefix = getarchprefix (desc, global_install)
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
783
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
784 if (global_install)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
785 [~, archprefix] = default_prefix (global_install, desc);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
786 else
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
787 archprefix = desc.dir;
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
788 endif
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
789
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
790 endfunction
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
791
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
792
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
793 function finish_installation (desc, packdir, global_install)
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
794
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
795 ## Is there a post-install to call?
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
796 if (exist (fullfile (packdir, "post_install.m"), "file"))
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
797 wd = pwd ();
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
798 try
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
799 cd (packdir);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
800 post_install (desc);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
801 cd (wd);
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
802 catch
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
803 cd (wd);
28092
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
804 sts = rmdir (desc.dir, "s");
9cb04a9e81ec rmdir: throw an error if operation fails and nargout == 0 (bug #57830).
Rik <rik@octave.org>
parents: 27928
diff changeset
805 sts = rmdir (getarchdir (desc), "s");
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
806 rethrow (lasterror ());
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
807 end_try_catch
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
808 endif
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
809
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
810 endfunction
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
811
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
812
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
813 function generate_lookfor_cache (desc)
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
814
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
815 dirs = strtrim (ostrsplit (genpath (desc.dir), pathsep ()));
27712
377f069841c1 Make packages installation dirs in global octave_packages file relative
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 27578
diff changeset
816 if (ispc)
377f069841c1 Make packages installation dirs in global octave_packages file relative
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 27578
diff changeset
817 dirs = cellfun (@canonicalize_file_name, dirs, "uniformoutput", false);
377f069841c1 Make packages installation dirs in global octave_packages file relative
Philip Nienhuis <prnienhuis@users.sf.net>
parents: 27578
diff changeset
818 endif
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
819 for i = 1 : length (dirs)
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
820 doc_cache_create (fullfile (dirs{i}, "doc-cache"), dirs{i});
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
821 endfor
21758
ffad2baa90f7 maint: Use newlines to make code more readable.
Rik <rik@octave.org>
parents: 21751
diff changeset
822
21615
9ccd64201b4d pkg: remove excessive number of private function files.
Carnë Draug <carandraug@octave.org>
parents: 21518
diff changeset
823 endfunction