Mercurial > ecos
annotate packages/ecosadmin.tcl @ 3211:8c765fccd2f2
Removed (obsolete) implementation of CYGINT_HAL_CORTEXM4_CODE.
| author | vae |
|---|---|
| date | Sat, 09 Mar 2013 17:32:05 +0000 |
| parents | d3f9f7616d6b |
| children |
| rev | line source |
|---|---|
| 2711 | 1 #!/usr/bin/env tclsh |
|
78
59d97b6ba612
Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents:
76
diff
changeset
|
2 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
3 # {{{ Banner |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
4 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
5 #=============================================================================== |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
6 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
7 # ecosadmin.tcl |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
8 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
9 # A package install/uninstall tool. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
10 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
11 #=============================================================================== |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
12 ## ####ECOSGPLCOPYRIGHTBEGIN#### |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
13 ## ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
14 ## This file is part of eCos, the Embedded Configurable Operating System. |
|
2930
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
15 ## Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc. |
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
208
diff
changeset
|
16 ## |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
17 ## eCos is free software; you can redistribute it and/or modify it under |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
18 ## the terms of the GNU General Public License as published by the Free |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
19 ## Software Foundation; either version 2 or (at your option) any later |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
20 ## version. |
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
208
diff
changeset
|
21 ## |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
22 ## eCos is distributed in the hope that it will be useful, but WITHOUT |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
23 ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
24 ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
25 ## for more details. |
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
208
diff
changeset
|
26 ## |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
27 ## You should have received a copy of the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
28 ## along with eCos; if not, write to the Free Software Foundation, Inc., |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
29 ## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
208
diff
changeset
|
30 ## |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
31 ## As a special exception, if other files instantiate templates or use |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
32 ## macros or inline functions from this file, or you compile this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
33 ## and link it with other works to produce a work based on this file, |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
34 ## this file does not by itself cause the resulting work to be covered by |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
35 ## the GNU General Public License. However the source code for this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
36 ## must still be made available in accordance with section (3) of the GNU |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
37 ## General Public License v2. |
|
210
d2c90368aeef
Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents:
208
diff
changeset
|
38 ## |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
39 ## This exception does not invalidate any other reasons why a work based |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
40 ## on this file might be covered by the GNU General Public License. |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
41 ## ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2711
diff
changeset
|
42 ## ####ECOSGPLCOPYRIGHTEND#### |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
43 #=============================================================================== |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
44 ######DESCRIPTIONBEGIN#### |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
45 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
46 # Author(s): jld |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
47 # Contributors: bartv |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
48 # Date: 1999-06-18 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
49 # Purpose: To install and uninstall packages from an eCos component |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
50 # repository |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
51 # Description: |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
52 # Usage: |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
53 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
54 #####DESCRIPTIONEND#### |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
55 #=============================================================================== |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
56 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
57 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
58 # }}} |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
59 # {{{ Version check |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
60 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
61 # ---------------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
62 # ecosadmin.tcl requires at least version 8.0 of Tcl, since it makes use of |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
63 # namespaces. It is possible that some users still have older versions. |
|
80
2085233a121a
Merge from eCos master repository on 2000-04-07-07:52:29-BST
jlarmour
parents:
78
diff
changeset
|
64 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
65 if { [info tclversion] < 8.0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
66 puts "This script requires Tcl 8.0 or later. You are running Tcl [info patchlevel]." |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
67 return |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
68 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
69 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
70 # }}} |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
71 # {{{ Namespace definition |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
72 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
73 # ---------------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
74 # Namespaces. All code and variables in this script are kept in the namespace |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
75 # "ecosadmin". This is not really necessary for stand-alone operation, but if it |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
76 # ever becomes desirable to embed this script in a larger application then |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
77 # using a namespace is a lot easier. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
78 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
79 # As a fringe benefit, all global variables can be declared inside this |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
80 # namespace and initialised. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
81 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
82 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
83 namespace eval ecosadmin { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
84 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
85 # Is this program running under Windows ? |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
86 variable windows_host [expr {$tcl_platform(platform) == "windows"}] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
87 variable null_device "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
88 if { $windows_host != 0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
89 set ecosadmin::null_device "nul" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
90 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
91 set ecosadmin::null_device "/dev/null" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
92 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
93 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
94 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
95 # Where is the component repository ? The following input sources |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
96 # are available: |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
97 # 1) the environment variable ECOS_REPOSITORY. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
98 # 2) $argv0 should correspond to the location of the ecosadmin.tcl |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
99 # script. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
100 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
101 variable component_repository "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
102 if { [info exists ::env(ECOS_REPOSITORY)] } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
103 # override the calculation of the repository location using the |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
104 # (undocumented) ECOS_REPOSITORY environment variable |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
105 set component_repository $::env(ECOS_REPOSITORY) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
106 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
107 set component_repository [pwd] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
108 if { [file dirname $argv0] != "." } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
109 set component_repository [file join $component_repository [file dirname $argv0]] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
110 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
111 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
112 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
113 # Details of the command line arguments, if any. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
114 variable list_packages_arg 0; # list |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
115 variable clean_database_arg 0; # clean |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
116 variable check_database_arg 0; # check |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
117 variable accept_license_arg 0; # --accept_license |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
118 variable extract_license_arg 0; # --extract_license |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
119 variable add_package ""; # add FILE |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
120 variable remove_package ""; # remove PACKAGE |
|
2930
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
121 variable keep_targets_arg 1; # --keep_targets, --remove_targets |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
122 variable merge_repository ""; # merge REPOSITORY |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
123 variable version_arg ""; # --version VER |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
124 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
125 # Details of all known packages, targets and templates |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
126 # read from the ecos.db file |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
127 variable known_packages "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
128 variable known_targets "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
129 variable known_templates "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
130 array set package_data {}; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
131 array set target_data {}; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
132 array set template_data {}; |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
133 |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
134 # List of packages merged from another repository |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
135 variable merge_packages "" |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
136 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
137 # What routines should be invoked for outputting fatal errors and |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
138 # for warning messages ? |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
139 variable fatal_error_handler ecosadmin::cli_fatal_error |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
140 variable warning_handler ecosadmin::cli_warning |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
141 variable report_handler ecosadmin::cli_report |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
142 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
143 # Keep or remove the CVS directories? |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
144 variable keep_cvs 0 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
145 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
146 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
147 # }}} |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
148 # {{{ Infrastructure |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
149 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
150 # ---------------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
151 # Minimal infrastructure support. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
152 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
153 # There must be some way of reporting fatal errors, of outputting warnings, |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
154 # and of generating report messages. The implementation of these things |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
155 # obviously depends on whether or not TK is present. In addition, if this |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
156 # script is being run inside a larger application then that larger |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
157 # application must be able to install its own versions of the routines. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
158 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
159 # Once it is possible to report fatal errors, an assertion facility becomes |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
160 # feasible. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
161 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
162 # These routines output fatal errors, warnings or miscellaneous messages. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
163 # Their implementations depend on the mode in which this script is operating. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
164 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
165 proc ecosadmin::fatal_error { msg } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
166 $ecosadmin::fatal_error_handler "$msg" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
167 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
168 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
169 proc ecosadmin::warning { msg } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
170 $ecosadmin::warning_handler "$msg" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
171 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
172 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
173 proc ecosadmin::report { msg } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
174 $ecosadmin::report_handler "$msg" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
175 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
176 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
177 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
178 # Command line versions. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
179 # NOTE: some formatting so that there are linebreaks at ~72 columns would be |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
180 # a good idea. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
181 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
182 proc ecosadmin::cli_fatal_error_handler { msg } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
183 error "$msg" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
184 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
185 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
186 proc ecosadmin::cli_warning_handler { msg } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
187 puts "ecosadmin warning: $msg" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
188 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
189 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
190 proc ecosadmin::cli_report_handler { msg } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
191 puts "$msg" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
192 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
193 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
194 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
195 # Determine the default destination for warnings and for fatal errors. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
196 # After the first call to this function it is possible to use assertions. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
197 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
198 proc ecosadmin::initialise_error_handling { } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
199 set ecosadmin::fatal_error_handler ecosadmin::cli_fatal_error_handler |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
200 set ecosadmin::warning_handler ecosadmin::cli_warning_handler |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
201 set ecosadmin::report_handler ecosadmin::cli_report_handler |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
202 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
203 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
204 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
205 # These routines can be used by containing programs to provide their |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
206 # own error handling. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
207 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
208 proc ecosadmin::set_fatal_error_handler { fn } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
209 ASSERT { $fn != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
210 set ecosadmin::fatal_error_handler $fn |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
211 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
212 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
213 proc ecosadmin::set_warning_handler { fn } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
214 ASSERT { $fn != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
215 set ecosadmin::warning_handler $fn |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
216 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
217 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
218 proc ecosadmin::set_report_handler { fn } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
219 ASSERT { $fn != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
220 set ecosadmin::report_handler $fn |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
221 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
222 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
223 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
224 # A very simple assertion facility. It takes a single argument, an expression |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
225 # that should be evaluated in the calling function's scope, and on failure it |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
226 # should generate a fatal error. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
227 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
228 proc ecosadmin::ASSERT { condition } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
229 set result [uplevel 1 [list expr $condition]] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
230 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
231 if { $result == 0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
232 fatal_error "assertion predicate \"$condition\"\nin \"[info level -1]\"" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
233 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
234 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
235 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
236 # }}} |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
237 # {{{ Utilities |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
238 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
239 # ---------------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
240 # cdl_compare_version. This is a partial implementation of the full |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
241 # cdl_compare_version facility defined in the product specification. Its |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
242 # purpose is to order the various versions of a given package with |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
243 # the most recent version first. As a special case, "current" is |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
244 # always considered the most recent. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
245 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
246 # There are similarities between cdl_compare_version and with Tcl's |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
247 # package vcompare, but cdl_compare_version is more general. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
248 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
249 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
250 proc ecosadmin::cdl_compare_version { arg1 arg2 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
251 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
252 if { $arg1 == $arg2 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
253 return 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
254 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
255 if { $arg1 == "current"} { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
256 return -1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
257 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
258 if { $arg2 == "current" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
259 return 1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
260 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
261 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
262 set index1 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
263 set index2 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
264 set ch1 "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
265 set ch2 "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
266 set num1 "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
267 set num2 "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
268 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
269 while { 1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
270 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
271 set ch1 [string index $arg1 $index1] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
272 set ch2 [string index $arg2 $index2] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
273 set num1 "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
274 set num2 "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
275 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
276 if { ($ch1 == "") && ($ch2 == "") } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
277 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
278 # Both strings have terminated at the same time. There may have |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
279 # been some spurious leading zeroes in numbers. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
280 return 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
281 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
282 } elseif { $ch1 == "" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
283 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
284 # The first string has ended first. If ch2 is a separator then |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
285 # arg2 is a derived version, e.g. v0.3.p1 and hence newer. Otherwise ch2 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
286 # is an experimental version v0.3beta and hence older. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
287 if { [string match \[-._\] $ch2] } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
288 return 1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
289 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
290 return -1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
291 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
292 } elseif { $ch2 == "" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
293 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
294 # Equivalent to the above. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
295 if { [string match \[-._\] $ch1] } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
296 return -1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
297 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
298 return 1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
299 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
300 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
301 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
302 # There is still data to be processed. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
303 # Check for both strings containing numbers at the current index. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
304 if { ( [string match \[0-9\] $ch1] ) && ( [string match \[0-9\] $ch2] ) } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
305 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
306 # Extract the entire numbers from the version string. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
307 while { [string match \[0-9\] $ch1] } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
308 set num1 "$num1$ch1" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
309 incr index1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
310 set ch1 [string index $arg1 $index1] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
311 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
312 while { [string match \[0-9\] $ch2] } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
313 set num2 "$num2$ch2" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
314 incr index2 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
315 set ch2 [string index $arg2 $index2] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
316 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
317 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
318 if { $num1 < $num2 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
319 return 1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
320 } elseif { $num1 > $num2 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
321 return -1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
322 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
323 continue |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
324 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
325 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
326 # This is not numerical data. If the two characters are the same then |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
327 # move on. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
328 if { $ch1 == $ch2 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
329 incr index1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
330 incr index2 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
331 continue |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
332 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
333 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
334 # Next check if both strings are at a separator. All separators can be |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
335 # used interchangeably. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
336 if { ( [string match \[-._\] $ch1] ) && ( [string match \[-._\] $ch2] ) } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
337 incr index1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
338 incr index2 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
339 continue |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
340 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
341 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
342 # There are differences in the characters and they are not interchangeable. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
343 # Just return a standard string comparison. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
344 return [string compare $ch1 $ch2] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
345 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
346 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
347 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
348 # }}} |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
349 # {{{ Argument parsing |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
350 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
351 # ---------------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
352 # The argv0 argument should be the name of this script. It can be used |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
353 # to get at the component repository location. If this script has been |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
354 # run incorrectly then currently it will fail: in future it may be |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
355 # desirable to check an environment variable instead. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
356 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
357 # The argv argument is a string containing the rest of the arguments. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
358 # If any of the arguments contain spaces then this argument will be |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
359 # surrounded by braces. If any of the arguments contain braces then |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
360 # things will break. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
361 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
362 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
363 proc ecosadmin::parse_arguments { argv0 argv } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
364 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
365 if { $argv != "" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
366 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
367 # There are arguments. If any of the arguments contained |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
368 # spaces then these arguments will have been surrounded |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
369 # by braces, which is a nuisance. So start by turning the |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
370 # arguments into a numerically indexed array. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
371 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
372 set argc 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
373 array set args { } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
374 foreach arg $argv { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
375 set args([incr argc]) $arg |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
376 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
377 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
378 # Now examine each argument with regular expressions. It is |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
379 # useful to have some variables filled in by the regexp |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
380 # matching. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
381 set dummy "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
382 set match1 "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
383 set match2 "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
384 for { set i 1 } { $i <= $argc } { incr i } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
385 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
386 # Check for --list and the other simple ones. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
387 if { [regexp -- {^-?-?list$} $args($i)] == 1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
388 set ecosadmin::list_packages_arg 1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
389 continue |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
390 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
391 |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
392 # check for the clean command |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
393 if { [regexp -- {^-?-?clean$} $args($i)] == 1 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
394 set ecosadmin::clean_database_arg 1 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
395 continue |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
396 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
397 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
398 # check for the check command |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
399 if { [regexp -- {^-?-?check$} $args($i)] == 1 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
400 set ecosadmin::check_database_arg 1 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
401 continue |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
402 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
403 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
404 # check for --version |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
405 if { [regexp -- {^-?-version=?(.*)$} $args($i) dummy match1] == 1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
406 if { $match1 != "" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
407 set ecosadmin::version_arg $match1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
408 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
409 if { $i == $argc } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
410 fatal_error "missing argument after --version" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
411 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
412 set ecosadmin::version_arg $args([incr i]) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
413 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
414 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
415 continue |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
416 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
417 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
418 # check for --accept_license |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
419 if { [regexp -- {^-?-accept_license$} $args($i)] == 1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
420 set ecosadmin::accept_license_arg 1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
421 continue |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
422 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
423 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
424 # check for --extract_license |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
425 if { [regexp -- {^-?-extract_license$} $args($i)] == 1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
426 set ecosadmin::extract_license_arg 1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
427 continue |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
428 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
429 |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
430 # check for --keep_targets |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
431 if { [regexp -- {^-?-keep_targets$} $args($i)] == 1 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
432 set ecosadmin::keep_targets_arg 1 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
433 continue |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
434 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
435 |
|
2930
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
436 # check for --remove_targets |
|
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
437 if { [regexp -- {^-?-remove_targets$} $args($i)] == 1 } { |
|
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
438 set ecosadmin::keep_targets_arg 0 |
|
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
439 continue |
|
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
440 } |
|
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
441 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
442 # check for the add command |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
443 if { [regexp -- {^-?-?add=?(.*)$} $args($i) dummy match1] == 1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
444 if { $match1 != "" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
445 set ecosadmin::add_package $match1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
446 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
447 if { $i == $argc } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
448 fatal_error "missing argument after add" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
449 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
450 set ecosadmin::add_package $args([incr i]) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
451 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
452 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
453 continue |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
454 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
455 |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
456 # check for the merge command |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
457 if { [regexp -- {^-?-?merge=?(.*)$} $args($i) dummy match1] == 1 } { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
458 if { $match1 != "" } { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
459 set ecosadmin::merge_repository $match1 |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
460 } else { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
461 if { $i == $argc } { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
462 fatal_error "missing argument after merge" |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
463 } else { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
464 set ecosadmin::merge_repository $args([incr i]) |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
465 } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
466 } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
467 continue |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
468 } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
469 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
470 # check for the remove command |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
471 if { [regexp -- {^-?-?remove=?(.*)$} $args($i) dummy match1] == 1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
472 if { $match1 != "" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
473 set ecosadmin::remove_package $match1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
474 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
475 if { $i == $argc } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
476 fatal_error "missing argument after remove" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
477 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
478 set ecosadmin::remove_package $args([incr i]) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
479 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
480 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
481 continue |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
482 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
483 |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
484 # Check for --srcdir |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
485 if { [regexp -- {^-?-srcdir=?([ \.\\/:_a-zA-Z0-9-]*)$} $args($i) dummy match1] == 1 } { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
486 if { $match1 == "" } { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
487 if { $i == $argc } { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
488 puts "ecosrelease: missing argument after --srcdir" |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
489 exit 1 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
490 } else { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
491 set match1 $args([incr i]) |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
492 } |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
493 } |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
494 set ecosadmin::component_repository $match1 |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
495 continue |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
496 } |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
497 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
498 # An unrecognised argument. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
499 fatal_error "invalid argument $args($i)" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
500 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
501 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
502 |
| 547 | 503 # Convert user-specified UNIX-style Cygwin pathnames to Windows Tcl-style as necessary |
| 504 set ecosadmin::component_repository [get_pathname_for_tcl $ecosadmin::component_repository] | |
| 505 set ecosadmin::add_package [get_pathname_for_tcl $ecosadmin::add_package] | |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
506 set ecosadmin::merge_repository [get_pathname_for_tcl $ecosadmin::merge_repository] |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
507 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
508 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
509 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
510 # Display help information if the user has typed --help, -H, --H, or -help. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
511 # The help text uses two hyphens for consistency with configure. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
512 # Arguably this should change. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
513 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
514 proc ecosadmin::argument_help { } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
515 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
516 puts "Usage: ecosadmin \[ command \]" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
517 puts " commands are:" |
|
2930
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
518 puts " list : list packages" |
|
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
519 puts " check : check database" |
|
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
520 puts " add FILE : add packages" |
|
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
521 puts " remove PACKAGE \[ --version VER \] \[ --remove_targets \] : remove a package" |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
522 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
523 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
524 # }}} |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
525 # {{{ Packages file |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
526 |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
527 proc ecosadmin::read_data { silentflag } { |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
528 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
529 ASSERT { $ecosadmin::component_repository != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
530 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
531 set ecosadmin::known_packages "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
532 set ecosadmin::known_targets "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
533 set ecosadmin::known_templates "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
534 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
535 # A safe interpreter is used to process the packages file. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
536 # This is somewhat overcautious, but it is also harmless. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
537 # The following two commands are made accessible to the slave |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
538 # interpreter and are responsible for updating the actual data. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
539 proc add_known_package { name } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
540 lappend ::ecosadmin::known_packages $name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
541 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
542 proc add_known_target { name } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
543 lappend ::ecosadmin::known_targets $name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
544 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
545 proc add_known_template { name } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
546 lappend ::ecosadmin::known_templates $name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
547 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
548 proc set_package_data { name value } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
549 set ::ecosadmin::package_data($name) $value |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
550 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
551 proc set_target_data { name value } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
552 set ::ecosadmin::target_data($name) $value |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
553 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
554 proc set_template_data { name value } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
555 set ::ecosadmin::template_data($name) $value |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
556 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
557 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
558 # Create the parser, add the aliased commands, and then define |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
559 # the routines that do the real work. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
560 set parser [interp create -safe] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
561 $parser alias add_known_package ecosadmin::add_known_package |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
562 $parser alias add_known_target ecosadmin::add_known_target |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
563 $parser alias add_known_template ecosadmin::add_known_template |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
564 $parser alias set_package_data ecosadmin::set_package_data |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
565 $parser alias set_target_data ecosadmin::set_target_data |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
566 $parser alias set_template_data ecosadmin::set_template_data |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
567 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
568 $parser eval { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
569 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
570 set current_package "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
571 set current_target "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
572 set current_template "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
573 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
574 proc package { name body } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
575 add_known_package $name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
576 set_package_data "$name,alias" "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
577 set_package_data "$name,versions" "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
578 set_package_data "$name,dir" "" |
|
1482
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
579 set_package_data "$name,hardware" 0 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
580 set ::current_package $name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
581 eval $body |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
582 set ::current_package "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
583 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
584 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
585 proc target { name body } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
586 add_known_target $name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
587 set_target_data "$name,packages" "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
588 set ::current_target $name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
589 eval $body |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
590 set ::current_target "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
591 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
592 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
593 #if 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
594 # templates are no longer specified in the package database |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
595 proc template { name body } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
596 add_known_template $name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
597 set_template_data "$name,packages" "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
598 set ::current_template $name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
599 eval $body |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
600 set ::current_template "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
601 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
602 #endif |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
603 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
604 proc packages { str } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
605 if { $::current_template != "" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
606 set_template_data "$::current_template,packages" $str |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
607 } elseif { $::current_target != "" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
608 set_target_data "$::current_target,packages" $str |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
609 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
610 ASSERT 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
611 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
612 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
613 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
614 proc directory { dir } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
615 set_package_data "$::current_package,dir" $dir |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
616 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
617 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
618 proc alias { str } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
619 if { $::current_package != "" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
620 set_package_data "$::current_package,alias" $str |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
621 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
622 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
623 |
|
1482
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
624 proc hardware { } { |
|
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
625 set_package_data "$::current_package,hardware" 1 |
|
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
626 } |
|
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
627 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
628 proc description { str } { } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
629 proc disable { str } { } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
630 proc enable { str } { } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
631 proc script { str } { } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
632 proc set_value { str1 str2 } { } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
633 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
634 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
635 # The parser is ready to evaluate the script. To avoid having to give the |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
636 # safe interpreter file I/O capabilities, the file is actually read in |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
637 # here and then evaluated. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
638 set filename [file join $ecosadmin::component_repository "ecos.db"] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
639 set status [ catch { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
640 set fd [open $filename r] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
641 set script [read $fd] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
642 close $fd |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
643 $parser eval $script |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
644 } message ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
645 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
646 if { $status != 0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
647 ecosadmin::fatal_error "parsing $filename:\n$message" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
648 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
649 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
650 # The interpreter and the aliased commands are no longer required. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
651 rename set_package_data {} |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
652 rename set_target_data {} |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
653 rename set_template_data {} |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
654 rename add_known_package {} |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
655 interp delete $parser |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
656 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
657 # At this stage the packages file has been read in. It is a good idea to |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
658 # check that all of these packages are present and correct, and incidentally |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
659 # figure out which versions are present. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
660 foreach pkg $ecosadmin::known_packages { |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
661 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
662 set pkgdir [file join $ecosadmin::component_repository $ecosadmin::package_data($pkg,dir)] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
663 if { ![file exists $pkgdir] || ![file isdir $pkgdir] } { |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
664 if { "" == $silentflag } { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
665 warning "package $pkg at $pkgdir missing" |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
666 } |
|
160
0d0f03f76f6a
Merge from eCos master repository on 2001-06-01-18:52:13-BST
jlarmour
parents:
156
diff
changeset
|
667 } else { |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
668 # Each subdirectory should correspond to a release. A utility routine |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
669 # is available for this. |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
670 set ecosadmin::package_data($pkg,versions) [locate_subdirs $pkgdir] |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
671 if { $ecosadmin::package_data($pkg,versions) == "" } { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
672 fatal_error "package $pkg has no version directories" |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
673 } |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
674 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
675 # Sort all the versions using a version-aware comparison version |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
676 set ecosadmin::package_data($pkg,versions) [ |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
677 lsort -command ecosadmin::cdl_compare_version $ecosadmin::package_data($pkg,versions) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
678 ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
679 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
680 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
681 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
682 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
683 # Given a package name as supplied by the user, return the internal package name. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
684 # This involves searching through the list of aliases. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
685 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
686 proc ecosadmin::find_package { name } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
687 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
688 foreach pkg $ecosadmin::known_packages { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
689 if { [string toupper $pkg] == [string toupper $name] } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
690 return $pkg |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
691 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
692 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
693 foreach alias $ecosadmin::package_data($pkg,alias) { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
694 if { [string toupper $alias] == [string toupper $name] } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
695 return $pkg |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
696 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
697 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
698 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
699 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
700 return "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
701 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
702 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
703 # }}} |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
704 # {{{ Directory and file utilities |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
705 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
706 # ---------------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
707 # Start with a number of utility routines to access all files in |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
708 # a directory, stripping out well-known files such as makefile.am. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
709 # The routines take an optional pattern argument if only certain |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
710 # files are of interest. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
711 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
712 # Note that symbolic links are returned as well as files. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
713 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
714 proc ecosadmin::locate_files { dir { pattern "*"} } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
715 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
716 ASSERT { $dir != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
717 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
718 # Start by getting a list of all the files. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
719 set filelist [glob -nocomplain -- [file join $dir $pattern]] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
720 |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
721 if { $pattern == "*" } { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
722 # For "everything", include ".*" files, but excluding . |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
723 # and .. directories |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
724 lappend filelist [glob -nocomplain -- [file join $dir ".\[a-zA-Z0-9\]*"]] |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
725 } |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
726 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
727 # Eliminate the pathnames from all of these files |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
728 set filenames "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
729 foreach file $filelist { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
730 if { [string range $file end end] != "~" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
731 lappend filenames [file tail $file] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
732 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
733 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
734 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
735 # Eliminate any subdirectories. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
736 set subdirs "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
737 foreach name $filenames { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
738 if { [file isdir [file join $dir $name]] } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
739 lappend subdirs $name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
740 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
741 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
742 foreach subdir $subdirs { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
743 set index [lsearch -exact $filenames $subdir] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
744 set filenames [lreplace $filenames $index $index] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
745 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
746 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
747 return $filenames |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
748 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
749 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
750 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
751 # This utility returns all sub-directories, as opposed to all files. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
752 # A variant glob pattern is used here. This version is not recursive. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
753 proc ecosadmin::locate_subdirs { dir { pattern "*" }} { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
754 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
755 ASSERT { $dir != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
756 |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
757 set dirlist [glob -nocomplain -- [file join $dir $pattern]] |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
758 |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
759 # Eliminate the pathnames and the regular (non-directory) files |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
760 set dirnames "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
761 foreach dir $dirlist { |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
762 if { [file isdirectory $dir] } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
763 lappend dirnames [file tail $dir] |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
764 } |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
765 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
766 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
767 # Get rid of the CVS directory, if any |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
768 if { $ecosadmin::keep_cvs == 0 } { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
769 set index [lsearch -exact $dirnames "CVS"] |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
770 if { $index != -1 } { |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
771 set dirnames [lreplace $dirnames $index $index] |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
772 } |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
160
diff
changeset
|
773 } |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
774 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
775 # That should be it. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
776 return $dirnames |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
777 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
778 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
779 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
780 # A variant which is recursive. This one does not support a pattern. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
781 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
782 proc ecosadmin::locate_all_subdirs { dir } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
783 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
784 ASSERT { $dir != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
785 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
786 set result "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
787 foreach subdir [locate_subdirs $dir] { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
788 lappend result $subdir |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
789 foreach x [locate_all_subdirs [file join $dir $subdir]] { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
790 lappend result [file join $subdir $x] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
791 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
792 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
793 return $result |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
794 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
795 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
796 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
797 # This routine returns a list of all the files in a given directory and in |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
798 # all subdirectories, preserving the subdirectory name. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
799 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
800 proc ecosadmin::locate_all_files { dir { pattern "*" } } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
801 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
802 ASSERT { $dir != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
803 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
804 set files [locate_files $dir $pattern] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
805 set subdirs [locate_subdirs $dir] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
806 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
807 foreach subdir $subdirs { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
808 set subfiles [locate_all_files [file join $dir $subdir] $pattern] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
809 foreach file $subfiles { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
810 lappend files [file join $subdir $file] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
811 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
812 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
813 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
814 return $files |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
815 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
816 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
817 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
818 # Sometimes a directory may be empty, or contain just a CVS subdirectory, |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
819 # in which case there is no point in copying it across. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
820 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
821 proc ecosadmin::is_empty_directory { dir } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
822 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
823 ASSERT { $dir != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
824 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
825 set contents [glob -nocomplain -- [file join $dir "*"]] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
826 if { [llength $contents] == 0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
827 return 1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
828 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
829 if { ([llength $contents] == 1) && [string match {*CVS} $contents] } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
830 return 1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
831 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
832 return 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
833 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
834 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
835 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
836 # ---------------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
837 # Take a cygwin32 filename such as //d/tmp/pkgobj and turn it into something |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
838 # acceptable to Tcl, i.e. d:/tmp/pkgobj. There are a few other complications... |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
839 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
840 proc ecosadmin::get_pathname_for_tcl { name } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
841 |
|
802
88ef969518a1
* ecosadmin.tcl: Prevent calls to 'cygpath' with an empty path argument.
jld
parents:
547
diff
changeset
|
842 if { ( $ecosadmin::windows_host ) && ( $name != "" ) } { |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
843 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
844 # If there is no logical drive letter specified |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
845 if { [ string match "?:*" $name ] == 0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
846 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
847 # Invoke cygpath to resolve the POSIX-style path |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
848 if { [ catch { exec cygpath -w $name } result ] != 0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
849 fatal_error "processing filepath $name:\n$result" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
850 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
851 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
852 set result $name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
853 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
854 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
855 # Convert backslashes to forward slashes |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
856 regsub -all -- {\\} $result "/" name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
857 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
858 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
859 return $name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
860 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
861 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
862 # ---------------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
863 # Make sure that a newly created or copied file is writable. This operation |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
864 # is platform-specific. Under Unix at most the current user is given |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
865 # permission, since there does not seem to be any easy way to get hold |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
866 # of the real umask. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
867 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
868 proc ecosadmin::make_writable { name } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
869 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
870 ASSERT { $name != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
871 ASSERT { [file isfile $name] } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
872 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
873 if { [file writable $name] == 0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
874 if { $ecosadmin::windows_host != 0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
875 file attributes $name -readonly 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
876 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
877 set mask [file attributes $name -permissions] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
878 set mask [expr $mask | 0200] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
879 file attributes $name -permissions $mask |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
880 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
881 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
882 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
883 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
884 # }}} |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
885 # {{{ main() |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
886 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
887 #----------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
888 # Procedure target_requires_missing_package determines whether a |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
889 # target entry is dependent on missing packages. It is called when |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
890 # filtering templates out of the database |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
891 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
892 proc ecosadmin::target_requires_missing_package { target } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
893 foreach package $ecosadmin::target_data($target,packages) { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
894 if { [ lsearch $ecosadmin::known_packages $package ] == -1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
895 return 1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
896 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
897 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
898 return 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
899 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
900 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
901 #----------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
902 # Procedure template_requires_missing_package determines whether a |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
903 # template entry is dependent on missing packages. It is called when |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
904 # filtering templates out of the database |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
905 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
906 proc ecosadmin::template_requires_missing_package { template } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
907 foreach package $ecosadmin::template_data($template,packages) { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
908 if { [ lsearch $ecosadmin::known_packages $package ] == -1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
909 return 1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
910 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
911 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
912 return 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
913 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
914 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
915 #----------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
916 # Procedure target_requires_any_package determines whether a target entry |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
917 # is dependent on specified packages. It is called when removing packages |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
918 # to determine whether a target should also be removed |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
919 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
920 proc ecosadmin::target_requires_any_package { target packages } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
921 foreach package $packages { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
922 if { [ lsearch $ecosadmin::target_data($target,packages) $package ] != -1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
923 return 1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
924 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
925 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
926 return 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
927 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
928 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
929 #----------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
930 # Procedure template_requires_any_package determines whether a template entry |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
931 # is dependent on specified packages. It is called when removing packages |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
932 # to determine whether a template should also be removed |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
933 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
934 proc ecosadmin::template_requires_any_package { template packages } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
935 foreach package $packages { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
936 if { [ lsearch $ecosadmin::template_data($template,packages) $package ] != -1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
937 return 1 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
938 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
939 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
940 return 0 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
941 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
942 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
943 #----------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
944 # Procedure merge_new_packages adds any entries in the specified data |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
945 # file to the eCos repository database iff they are not already present |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
946 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
947 proc ecosadmin::merge_new_packages { datafile } { |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
948 # array of targets which require merging of package list |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
949 array set ::ecosadmin::merge_target_packages {} |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
950 variable ::ecosadmin::merge_targets "" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
951 variable ::ecosadmin::target_packages "" |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
952 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
953 # open the eCos database file for appending |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
954 set ecosfile [ file join $ecosadmin::component_repository "ecos.db" ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
955 variable outfile [ open $ecosfile a+ ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
956 |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
957 # initialize the list of merged packages |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
958 set ecosadmin::merge_packages "" |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
959 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
960 # this procedure is called when the interpreter encounters a |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
961 # package command in the datafile |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
962 proc merge { command name body } { |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
963 ecosadmin::report "processing $command $name" |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
964 # append the new package/target/template only if it is not already known |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
965 if { ( ( $command == "package" ) && ( [ lsearch -exact $ecosadmin::known_packages $name ] == -1 ) ) || |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
966 ( ( $command == "target" ) && ( [ lsearch -exact $ecosadmin::known_targets $name ] == -1 ) ) || |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
967 ( ( $command == "template" ) && ( [ lsearch -exact $ecosadmin::known_templates $name ] == -1 ) ) } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
968 puts $ecosadmin::outfile "$command $name {$body}\n" |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
969 } elseif { ($command == "target") } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
970 # target is already defined so store any new package names for a possible merge |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
971 set merge_required 0 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
972 foreach pkg $ecosadmin::target_packages { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
973 # for each package name in the target record |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
974 if { [ lsearch $ecosadmin::target_data($name,packages) $pkg ] == -1 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
975 # package name is not in the existing target record |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
976 lappend ecosadmin::merge_target_packages($name) $pkg |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
977 set merge_required 1 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
978 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
979 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
980 if { $merge_required == 1 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
981 # at least one package name is not in the existing target record |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
982 lappend ecosadmin::merge_targets $name |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
983 } |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
984 } |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
985 |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
986 # add new packages to the list of merged packages |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
987 if { ( "package" == $command ) } { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
988 lappend ecosadmin::merge_packages $name |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
989 } |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
990 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
991 |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
992 proc set_target_packages { packages } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
993 set ecosadmin::target_packages $packages |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
994 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
995 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
996 # Create the parser, add the aliased commands, and then define |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
997 # the routines that do the real work. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
998 set parser [ interp create -safe ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
999 $parser alias merge ecosadmin::merge |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1000 $parser alias set_target_packages ecosadmin::set_target_packages |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1001 $parser eval { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1002 proc package { name body } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1003 merge "package" $name $body |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1004 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1005 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1006 proc template { name body } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1007 merge "template" $name $body |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1008 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1009 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1010 proc target { name body } { |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1011 eval $body |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1012 merge "target" $name $body |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1013 } |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1014 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1015 proc packages { str } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1016 set_target_packages $str |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1017 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1018 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1019 proc alias { str } { } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1020 proc description { str } { } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1021 proc disable { str } { } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1022 proc enable { str } { } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1023 proc set_value { str1 str2 } { } |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1024 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1025 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1026 # The parser is ready to evaluate the script. To avoid having to give the |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1027 # safe interpreter file I/O capabilities, the file is actually read in |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1028 # here and then evaluated. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1029 set status [ catch { |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1030 set fd [ open $datafile r ] |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1031 set script [ read $fd ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1032 close $fd |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1033 $parser eval $script |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1034 } message ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1035 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1036 # The interpreter and the aliased commands are no longer required. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1037 rename merge {} |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1038 rename set_target_packages {} |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1039 interp delete $parser |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1040 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1041 # close the eCos database file |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1042 close $outfile |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1043 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1044 # report errors |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1045 if { $status != 0 } { |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1046 ecosadmin::fatal_error "parsing $datafile:\n$message" |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1047 } |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1048 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1049 # having appended any new records to ecos.db we can now merge extra |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1050 # packages into target records as necessary |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1051 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1052 # open the new eCos database file for writing |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1053 set ecosfile [ file join $ecosadmin::component_repository "ecos.db.new" ] |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1054 variable outfile [ open $ecosfile w ] |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1055 variable target_packages "" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1056 variable target_attributes "" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1057 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1058 # this procedure is called when the interpreter encounters a command in ecos.db when |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1059 # merging extra packages into target records |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1060 proc merge_target { command name body } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1061 if { ( $command == "target" ) && ( [ lsearch $ecosadmin::merge_targets $name ] != -1 ) } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1062 # add new package(s) to the target definition |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1063 puts $ecosadmin::outfile "$command $name \{\n$ecosadmin::target_attributes \tpackages \{" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1064 foreach pkg $ecosadmin::target_packages { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1065 puts $ecosadmin::outfile "\t\t$pkg" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1066 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1067 foreach pkg $ecosadmin::merge_target_packages($name) { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1068 ecosadmin::report "adding $pkg to target $name" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1069 puts $ecosadmin::outfile "\t\t$pkg" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1070 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1071 puts $ecosadmin::outfile "\t\}\n\}\n" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1072 } else { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1073 # copy the data record to the new database |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1074 puts $ecosadmin::outfile "$command $name {$body}\n" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1075 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1076 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1077 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1078 proc add_target_attribute { attribute value } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1079 set ecosadmin::target_attributes "$ecosadmin::target_attributes \t$attribute $value\n" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1080 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1081 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1082 proc clear_target_attributes { } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1083 set ecosadmin::target_attributes "" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1084 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1085 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1086 proc set_target_packages { packages } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1087 set ecosadmin::target_packages $packages |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1088 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1089 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1090 # Create the parser, add the aliased commands, and then define |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1091 # the routines that do the real work. |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1092 set parser [ interp create -safe ] |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1093 $parser alias add_target_attribute ecosadmin::add_target_attribute |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1094 $parser alias set_target_packages ecosadmin::set_target_packages |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1095 $parser alias clear_target_attributes ecosadmin::clear_target_attributes |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1096 $parser eval { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1097 proc package { name body } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1098 filter "package" $name $body |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1099 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1100 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1101 proc template { name body } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1102 filter "template" $name $body |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1103 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1104 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1105 proc target { name body } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1106 clear_target_attributes |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1107 eval $body |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1108 filter "target" $name $body |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1109 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1110 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1111 proc packages { str } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1112 set_target_packages $str |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1113 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1114 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1115 proc alias { str } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1116 add_target_attribute "alias" \{$str\} |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1117 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1118 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1119 proc description { str } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1120 add_target_attribute "description" \"$str\" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1121 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1122 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1123 proc disable { str } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1124 add_target_attribute "disable" \{$str\} |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1125 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1126 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1127 proc enable { str } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1128 add_target_attribute "enable" \{$str\} |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1129 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1130 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1131 proc set_value { str1 str2 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1132 add_target_attribute "set_value" "$str1 \"$str2\"" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1133 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1134 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1135 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1136 # The parser is ready to evaluate the script. To avoid having to give the |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1137 # safe interpreter file I/O capabilities, the file is actually read in |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1138 # here and then evaluated. |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1139 set filename [ file join $ecosadmin::component_repository "ecos.db" ] |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1140 set status [ catch { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1141 set fd [ open $filename r ] |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1142 set script [ read $fd ] |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1143 close $fd |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1144 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1145 $parser alias filter ecosadmin::merge_target |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1146 $parser eval $script |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1147 } message ] |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1148 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1149 # The interpreter and the aliased commands are no longer required. |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1150 rename merge_target {} |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1151 interp delete $parser |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1152 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1153 # close the new eCos database file |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1154 close $outfile |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1155 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1156 # report errors |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1157 if { $status != 0 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1158 ecosadmin::fatal_error "parsing $filename:\n$message" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1159 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1160 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1161 # replace the old eCos database file with the new one |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1162 file rename -force $ecosfile $filename |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1163 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1164 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1165 #----------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1166 # Procedure filter_old_packages removes the specified packages/versions |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1167 # from the eCos repository database. Any targets and templates dependent |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1168 # on the removed packages are also removed. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1169 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1170 proc ecosadmin::filter_old_packages { old_packages } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1171 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1172 # open the new eCos database file for writing |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1173 set ecosfile [ file join $ecosadmin::component_repository "ecos.db.new" ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1174 variable outfile [ open $ecosfile w ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1175 variable filter_list $old_packages |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1176 variable removed_packages "" |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1177 variable target_packages "" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1178 variable target_attributes "" |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1179 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1180 # this procedure is called when the interpreter encounters a command in the datafile on the first pass |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1181 # it generates a list of packages which will be removed on the second pass |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1182 proc removelist { command name body } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1183 if { [ lsearch $ecosadmin::filter_list $name ] != -1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1184 # the package is in the filter list |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1185 if { ( $ecosadmin::version_arg == "" ) || ( [ llength $ecosadmin::package_data($name,versions) ] == 1 ) } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1186 # there is no version argument or only one version so add the package to the remove list |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1187 set ::ecosadmin::removed_packages [ lappend ::ecosadmin::removed_packages $name ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1188 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1189 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1190 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1191 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1192 # this procedure is called when the interpreter encounters a command in the datafile on the second pass |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1193 proc filter { command name body } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1194 if { ( $command == "target" ) && ( ( [ target_requires_any_package $name $ecosadmin::removed_packages ] != 0 ) || ( [ target_requires_missing_package $name ] != 0 ) ) } { |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1195 # the target requires a package which has been removed |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1196 if { $ecosadmin::keep_targets_arg != 1 } { |
|
2930
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
1197 # "--remove_targets" specified so remove the target |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1198 ecosadmin::report "removing target $name" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1199 } else { |
|
2930
d3f9f7616d6b
* ecosadmin.tcl: Keep target records containing removed packages by
jld
parents:
2729
diff
changeset
|
1200 # remove missing packages from the target definition |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1201 puts $ecosadmin::outfile "$command $name \{\n$ecosadmin::target_attributes \tpackages \{" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1202 foreach pkg $ecosadmin::target_packages { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1203 if { ([ lsearch $ecosadmin::removed_packages $pkg ] == -1) && ([ lsearch $ecosadmin::known_packages $pkg ] != -1) } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1204 # package exists and has not been listed for removal so keep it in the target definition |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1205 puts $ecosadmin::outfile "\t\t$pkg" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1206 } else { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1207 # package is missing or has been listed for removal so remove it from the target definition |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1208 puts "removing $pkg from $name target record" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1209 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1210 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1211 puts $ecosadmin::outfile "\t\}\n\}\n" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1212 } |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1213 } elseif { ( $command == "template" ) && ( ( [ template_requires_any_package $name $ecosadmin::removed_packages ] != 0 ) || ( [ template_requires_missing_package $name ] != 0 ) ) } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1214 # the template requires a package which has been removed so remove the template |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1215 ecosadmin::report "removing template $name" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1216 } elseif { [ lsearch $ecosadmin::filter_list $name ] == -1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1217 # the package is not in the filter list so copy the data to the new database |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1218 puts $ecosadmin::outfile "$command $name {$body}\n" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1219 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1220 # the package is in the filter list |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1221 set package_dir [ file join $ecosadmin::component_repository $ecosadmin::package_data($name,dir) ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1222 if { ( $ecosadmin::version_arg != "" ) && ( [ llength $ecosadmin::package_data($name,versions) ] > 1 ) } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1223 # there are multiple versions and only one version will be removed |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1224 # so copy the data to the new database and only remove one version directory |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1225 set package_dir [ file join $package_dir $ecosadmin::version_arg ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1226 ecosadmin::report "removing package $name $ecosadmin::version_arg" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1227 puts $ecosadmin::outfile "$command $name {$body}\n" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1228 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1229 # there is no version argument or only one version so delete the package directory |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1230 ecosadmin::report "removing package $name" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1231 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1232 if { [ catch { file delete -force -- $package_dir } message ] != 0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1233 # issue a warning if package deletion failed - this is not fatal |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1234 ecosadmin::warning $message |
|
1482
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
1235 } |
|
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
1236 set dir [ file dirname $package_dir ] |
|
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
1237 while { [ llength [ glob -nocomplain -- [ file join $dir "*" ] ] ] == 0 } { |
|
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
1238 # the parent of the deleted directory is now empty so delete it |
|
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
1239 if { [ catch { file delete -- $dir } message ] != 0 } { |
|
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
1240 # issue a warning if empty directory deletion failed - this is not fatal |
|
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
1241 ecosadmin::warning $message |
|
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
1242 } |
|
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
1243 set dir [ file dirname $dir ] |
|
111c2191e6f5
* ecos.db: Add 'hardware' attribute to CYGPKG_DEVS_ETH_ARM_KS32C5000.
jld
parents:
1048
diff
changeset
|
1244 } |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1245 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1246 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1247 |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1248 proc add_target_attribute { attribute value } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1249 set ecosadmin::target_attributes "$ecosadmin::target_attributes \t$attribute $value\n" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1250 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1251 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1252 proc clear_target_attributes { } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1253 set ecosadmin::target_attributes "" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1254 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1255 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1256 proc set_target_packages { packages } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1257 set ecosadmin::target_packages $packages |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1258 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1259 |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1260 # Create the parser, add the aliased commands, and then define |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1261 # the routines that do the real work. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1262 set parser [ interp create -safe ] |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1263 $parser alias add_target_attribute ecosadmin::add_target_attribute |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1264 $parser alias set_target_packages ecosadmin::set_target_packages |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1265 $parser alias clear_target_attributes ecosadmin::clear_target_attributes |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1266 $parser eval { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1267 proc package { name body } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1268 filter "package" $name $body |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1269 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1270 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1271 proc template { name body } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1272 filter "template" $name $body |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1273 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1274 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1275 proc target { name body } { |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1276 clear_target_attributes |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1277 eval $body |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1278 filter "target" $name $body |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1279 } |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1280 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1281 proc packages { str } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1282 set_target_packages $str |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1283 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1284 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1285 proc alias { str } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1286 add_target_attribute "alias" \{$str\} |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1287 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1288 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1289 proc description { str } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1290 add_target_attribute "description" \"$str\" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1291 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1292 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1293 proc disable { str } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1294 add_target_attribute "disable" \{$str\} |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1295 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1296 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1297 proc enable { str } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1298 add_target_attribute "enable" \{$str\} |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1299 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1300 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1301 proc set_value { str1 str2 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1302 add_target_attribute "set_value" "$str1 \"$str2\"" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1303 } |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1304 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1305 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1306 # The parser is ready to evaluate the script. To avoid having to give the |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1307 # safe interpreter file I/O capabilities, the file is actually read in |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1308 # here and then evaluated. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1309 set filename [ file join $ecosadmin::component_repository "ecos.db" ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1310 set status [ catch { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1311 set fd [ open $filename r ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1312 set script [ read $fd ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1313 close $fd |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1314 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1315 # first pass to generate a list of packages which will be removed |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1316 $parser alias filter ecosadmin::removelist |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1317 $parser eval $script |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1318 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1319 # second pass to remove the packages, targets and templates |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1320 $parser alias filter ecosadmin::filter |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1321 $parser eval $script |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1322 } message ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1323 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1324 # The interpreter and the aliased commands are no longer required. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1325 rename filter {} |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1326 interp delete $parser |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1327 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1328 # close the new eCos database file |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1329 close $outfile |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1330 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1331 # report errors |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1332 if { $status != 0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1333 ecosadmin::fatal_error "parsing $filename:\n$message" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1334 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1335 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1336 # replace the old eCos database file with the new one |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1337 file rename -force $ecosfile $filename |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1338 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1339 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1340 # ---------------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1341 # Process_add_packages. This routine is responsible for installing packages |
|
387
44d2cbd109ee
* ecosadmin.tcl (ecosadmin::process_add_package): Use gzip -d, not
jlarmour
parents:
210
diff
changeset
|
1342 # into the eCos repository using the gzip and tar tools which must be on |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1343 # the path |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1344 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1345 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1346 proc ecosadmin::process_add_package { } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1347 ASSERT { $ecosadmin::add_package != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1348 ASSERT { $ecosadmin::component_repository != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1349 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1350 # calculate the absolute path of the specified package archive |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1351 # since we must change directory before extracting files |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1352 # note that we cannot use "tar -C" to avoid changing directory |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1353 # since "tar -C" only accepts relative paths |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1354 set abs_package [ file join [ pwd ] $ecosadmin::add_package ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1355 set datafile "pkgadd.db" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1356 set licensefile "pkgadd.txt" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1357 set logfile "pkgadd.log" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1358 cd $ecosadmin::component_repository |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1359 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1360 # check for --extract_license on command line |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1361 if { $ecosadmin::extract_license_arg == 1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1362 # extract the license file (if any) from the specified gzipped tar archive |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1363 file delete $licensefile |
|
387
44d2cbd109ee
* ecosadmin.tcl (ecosadmin::process_add_package): Use gzip -d, not
jlarmour
parents:
210
diff
changeset
|
1364 catch { exec > $ecosadmin::null_device gzip -d < $abs_package | tar xf - $licensefile } |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1365 return |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1366 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1367 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1368 # extract the package data file from the specified gzipped tar archive |
|
387
44d2cbd109ee
* ecosadmin.tcl (ecosadmin::process_add_package): Use gzip -d, not
jlarmour
parents:
210
diff
changeset
|
1369 if { [ catch { exec > $ecosadmin::null_device gzip -d < $abs_package | tar xf - $datafile } message ] != 0 } { |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1370 fatal_error "extracting $datafile:\n$message" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1371 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1372 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1373 # obtain license acceptance |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1374 if { [ ecosadmin::accept_license $abs_package $licensefile ] != "y" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1375 file delete $datafile |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1376 file delete $licensefile |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1377 fatal_error "license agreement not accepted" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1378 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1379 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1380 # extract the remaining package contents and generate a list of extracted files |
|
387
44d2cbd109ee
* ecosadmin.tcl (ecosadmin::process_add_package): Use gzip -d, not
jlarmour
parents:
210
diff
changeset
|
1381 if { [ catch { exec gzip -d < $abs_package | tar xvf - > $logfile } message ] != 0 } { |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1382 file delete $logfile |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1383 fatal_error "extracting files:\n$message" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1384 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1385 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1386 # read the list of extracted files from the log file |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1387 set fd [ open $logfile r ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1388 set message [ read $fd ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1389 close $fd |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1390 file delete $logfile |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1391 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1392 # convert extracted text files to use the line-ending convention of the host |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1393 set filelist [ split $message "\n" ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1394 set binary_extension ".bin" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1395 foreach filename $filelist { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1396 if { [ file isfile $filename ] != 0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1397 if { [ file extension $filename ] == $binary_extension } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1398 # a binary file - so remove the binary extension |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1399 file rename -force -- $filename [ file rootname $filename ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1400 } else { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1401 # a text file - so convert file to use native line-endings |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1402 # read in the file (line-ending conversion is implicit) |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1403 set fd [ open $filename "r" ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1404 set filetext [ read $fd ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1405 close $fd |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1406 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1407 # write the file out again |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1408 set fd [ open $filename "w" ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1409 puts -nonewline $fd $filetext |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1410 close $fd |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1411 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1412 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1413 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1414 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1415 # merge the new package information into the eCos database file as necessary |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1416 ecosadmin::merge_new_packages [ file join $ecosadmin::component_repository $datafile ] |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1417 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1418 # delete the database and license files |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1419 file delete $datafile |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1420 file delete $licensefile |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1421 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1422 # read the revised database back in and remove any |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1423 # targets and templates with missing packages |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1424 read_data "" |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1425 filter_old_packages "" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1426 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1427 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1428 # ---------------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1429 # Process_remove_package. This routine is responsible for uninstalling a |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1430 # package from the eCos repository |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1431 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1432 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1433 proc ecosadmin::process_remove_package { } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1434 ASSERT { $ecosadmin::remove_package != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1435 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1436 # get the formal package name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1437 set package_name [ ecosadmin::find_package $ecosadmin::remove_package ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1438 if { $package_name == "" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1439 # package not found |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1440 fatal_error "package $ecosadmin::remove_package not found" |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1441 } elseif { $ecosadmin::version_arg == "" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1442 # version not specified |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1443 # if { [ llength $ecosadmin::package_data($package_name,versions) ] > 1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1444 # fatal_error "multiple versions, use --version" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1445 # } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1446 } elseif { [ lsearch $ecosadmin::package_data($package_name,versions) $ecosadmin::version_arg ] == -1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1447 # specified version not found |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1448 fatal_error "version $ecosadmin::version_arg not found" |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1449 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1450 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1451 # filter out the old package from the eCos database file |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1452 filter_old_packages $package_name |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1453 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1454 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1455 # ---------------------------------------------------------------------------- |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1456 # Process_clean_database. This routine is responsible for tidying up an |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1457 # eCos repository package database |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1458 # |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1459 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1460 proc ecosadmin::process_clean_database { } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1461 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1462 # filter out missing packages from the eCos database file |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1463 filter_old_packages "" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1464 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1465 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1466 # ---------------------------------------------------------------------------- |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1467 # Process_check_database. This routine is responsible for checking an |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1468 # eCos repository package database |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1469 # |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1470 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1471 proc ecosadmin::process_check_database { } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1472 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1473 foreach target $ecosadmin::known_targets { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1474 foreach package $ecosadmin::target_data($target,packages) { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1475 if { [ lsearch -exact $ecosadmin::known_packages $package ] != -1 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1476 if { $ecosadmin::package_data($package,hardware) != 1 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1477 ecosadmin::warning "non-hardware package $package used in target $target" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1478 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1479 } else { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1480 ecosadmin::warning "target $target refers to non-existent package $package" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1481 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1482 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1483 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1484 foreach package $ecosadmin::known_packages { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1485 if { $ecosadmin::package_data($package,hardware) == 1 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1486 variable hardware_package_required 0 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1487 foreach target $ecosadmin::known_targets { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1488 if { [ target_requires_any_package $target $package ] } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1489 set hardware_package_required 1 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1490 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1491 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1492 if { $hardware_package_required == 0 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1493 ecosadmin::warning "hardware package $package not used by any target" |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1494 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1495 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1496 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1497 } |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1498 |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1499 # ---------------------------------------------------------------------------- |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1500 # Process_merge_repository. This routine is responsible for merging packages |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1501 # from another repository into the eCos repository |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1502 # |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1503 |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1504 proc ecosadmin::process_merge_repository { } { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1505 ASSERT { $ecosadmin::merge_repository != "" } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1506 ASSERT { $ecosadmin::component_repository != "" } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1507 |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1508 # merge new package and target information into the eCos database file as necessary |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1509 # names of packages to be merged are placed in $ecosadmin::merge_packages |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1510 ecosadmin::merge_new_packages [ file join $ecosadmin::merge_repository "ecos.db" ] |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1511 |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1512 # read the revised database back in to pick up new package paths, but ignore missing package directories |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1513 read_data "silent" |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1514 |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1515 # copy package directories into the repository as necessary |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1516 # existing packages are never replaced but a another version may be added |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1517 foreach pkg $ecosadmin::merge_packages { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1518 set newpkgdir [file join $ecosadmin::merge_repository $ecosadmin::package_data($pkg,dir)] |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1519 foreach newpkgver [locate_subdirs $newpkgdir] { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1520 if { [lsearch $ecosadmin::package_data($pkg,versions) $newpkgver] == -1 } { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1521 ecosadmin::report "copying $pkg $newpkgver" |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1522 file mkdir [ file join $ecosadmin::component_repository $ecosadmin::package_data($pkg,dir) ] |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1523 file copy [ file join $newpkgdir $newpkgver ] [ file join $ecosadmin::component_repository $ecosadmin::package_data($pkg,dir) $newpkgver ] |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1524 } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1525 } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1526 } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1527 |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1528 # read the revised database again to deliver warnings of missing package directories if necessary |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1529 read_data "" |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1530 |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1531 # copy new files from the pkgconf and templates directory hierarchies into the repository as necessary |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1532 foreach topdir { pkgconf templates } { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1533 set repository_files [ ecosadmin::locate_all_files [ file join $ecosadmin::component_repository $topdir ] ] |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1534 set merge_files [ ecosadmin::locate_all_files [ file join $ecosadmin::merge_repository $topdir ] ] |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1535 foreach filename $merge_files { |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1536 if { [string length $filename] > 0 && [lsearch $repository_files $filename] == -1 } { |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1537 ecosadmin::report "copying $topdir file $filename" |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1538 file mkdir [ file join $ecosadmin::component_repository $topdir [ file dirname $filename ] ] |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1539 file copy [ file join $ecosadmin::merge_repository $topdir $filename ] [ file join $ecosadmin::component_repository $topdir $filename ] |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1540 } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1541 } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1542 } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1543 |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1544 # copy files from the top level packages directory into the repository as necessary |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1545 foreach filename [ glob -nocomplain -directory $ecosadmin::merge_repository -type f * ] { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1546 set destination [ file join $ecosadmin::component_repository [ file tail $filename ] ] |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1547 if { 0 == [ file exists $destination ] } { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1548 ecosadmin::report "copying file [file tail $filename]" |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1549 file copy $filename $destination |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1550 } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1551 } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1552 } |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1553 |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1554 # ---------------------------------------------------------------------------- |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1555 # Accept_license. This routine is responsible for displaying the package |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1556 # license and obtaining user acceptance. It returns "y" if the license is |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1557 # accepted. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1558 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1559 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1560 proc ecosadmin::accept_license { archivename filename } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1561 ASSERT { $ecosadmin::add_package != "" } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1562 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1563 # check for --accept_license on command line |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1564 if { $ecosadmin::accept_license_arg == 1 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1565 # --accept_license specified so do not prompt for acceptance |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1566 return "y" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1567 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1568 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1569 # extract the specified license file from the specified gzipped tar archive |
|
387
44d2cbd109ee
* ecosadmin.tcl (ecosadmin::process_add_package): Use gzip -d, not
jlarmour
parents:
210
diff
changeset
|
1570 if { [ catch { exec > $ecosadmin::null_device gzip -d < $archivename | tar xf - $filename } message ] != 0 } { |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1571 # no license file |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1572 return "y" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1573 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1574 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1575 # read in the file and output to the user |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1576 set fd [ open $filename "r" ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1577 set filetext [ read $fd ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1578 close $fd |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1579 puts $filetext |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1580 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1581 # prompt for acceptance |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1582 puts -nonewline "Do you accept all the terms of the preceding license agreement? (y/n) " |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1583 flush "stdout" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1584 gets "stdin" response |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1585 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1586 # return the first character of the response in lowercase |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1587 return [ string tolower [ string index $response 0 ] ] |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1588 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1589 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1590 # ---------------------------------------------------------------------------- |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1591 # Main(). This code only runs if the script is being run stand-alone rather |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1592 # than as part of a larger application. The controlling predicate is the |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1593 # existence of the variable ecosadmin_not_standalone which can be set by |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1594 # the containing program if any. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1595 # |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1596 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1597 if { ! [info exists ecosadmin_not_standalone] } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1598 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1599 # Decide where warnings and fatal errors should go. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1600 ecosadmin::initialise_error_handling |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1601 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1602 # First, check for --help or any of the variants. If this script |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1603 # is running in a larger program then it is assumed that the |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1604 # containing program will not pass --help as an argument. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1605 if { ( $argv == "--help" ) || ( $argv == "-help" ) || |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1606 ( $argv == "--H" ) || ( $argv == "-H" ) || ($argv == "" ) } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1607 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1608 ecosadmin::argument_help |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1609 return |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1610 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1611 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1612 # catch any errors while processing the specified command |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1613 if { [ catch { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1614 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1615 # Parse the arguments and set the global variables appropriately. |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1616 ecosadmin::parse_arguments $argv0 $argv |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1617 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1618 # Read in the eCos repository database. |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1619 ecosadmin::read_data "" |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1620 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1621 # Process the ecosadmin command |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1622 if { $ecosadmin::list_packages_arg != 0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1623 foreach pkg $ecosadmin::known_packages { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1624 ecosadmin::report "$pkg: $ecosadmin::package_data($pkg,versions)" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1625 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1626 } elseif { $ecosadmin::add_package != "" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1627 ecosadmin::process_add_package |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1628 } elseif { $ecosadmin::remove_package != "" } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1629 ecosadmin::process_remove_package |
|
1048
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1630 } elseif { $ecosadmin::merge_repository != "" } { |
|
4d9dfbffc2d1
* ecosadmin.tcl: Add repository merge capability (undocumented and unsupported
jld
parents:
802
diff
changeset
|
1631 ecosadmin::process_merge_repository |
|
2593
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1632 } elseif { $ecosadmin::clean_database_arg != 0 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1633 ecosadmin::process_clean_database |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1634 } elseif { $ecosadmin::check_database_arg != 0 } { |
|
9c68cbb6424d
* ecosadmin.tcl: Accommodate recent Cygwin and provide repository sanity
jld
parents:
1482
diff
changeset
|
1635 ecosadmin::process_check_database |
|
76
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1636 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1637 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1638 } error_message ] != 0 } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1639 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1640 # handle error message |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1641 if { [ info exists gui_mode ] } { |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1642 return $error_message |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1643 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1644 puts "ecosadmin error: $error_message" |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1645 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1646 return |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1647 } |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1648 |
|
435cced73e2f
eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents:
diff
changeset
|
1649 # }}} |
