Check-in [6a05f4832c]
Not logged in
Overview
Comment:Remove some duplicated code. Reorganize some code.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 6a05f4832c522f251e757b4dbaeab958b73a3237
User & Date: mistachkin on 2016-10-31 01:19:35
Other Links: manifest | tags
Context
2016-10-31
01:21
Fix a comment. check-in: 086029eb28 user: mistachkin tags: trunk
01:19
Remove some duplicated code. Reorganize some code. check-in: 6a05f4832c user: mistachkin tags: trunk
00:39
Fix platform detection for neutral packages in the downloader. Verify that OpenPGP is installed prior to calling it. check-in: 5652e4cf00 user: mistachkin tags: trunk
Changes

Modified client/1.0/neutral/pkgd.eagle from [9ace2abafb] to [8ca4ea040d].

698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
        }
      }
    }

    return ""
  }

  #
  # NOTE: This procedure attempts to guess a package name based on a list of
  #       its files.  It relies upon the fact that all packages must include
  #       a package index file.  The language argument must be one of the
  #       literal strings "eagle", "tcl", or "client".  The fileNames argument
  #       must be the list of file names to be downloaded.  The package name,
  #       if one can be detected, is returned; otherwise, an empty string will
  #       be returned.
  #
  proc guessPackageNameFromFileNames { language fileNames } {
    set packageIndexFileName [getPackageIndexFileName $language]

    if {[string length $packageIndexFileName] > 0} then {
      foreach fileName $fileNames {
        set fileNameOnly [file tail $fileName]

        if {$fileNameOnly eq $packageIndexFileName} then {
          set directory [file dirname $fileName]

          if {[string length $directory] > 0} then {
            return [file tail $directory]
          }
        }
      }
    }

    return ""
  }

  #
  # NOTE: This procedure verifies the platform specified by the caller.  The
  #       platform argument must be an empty string -OR- one of the literal
  #       strings "neutral", "win32-arm", "win32-x86", "win64-arm64",
  #       "win64-ia64", or "win64-x64".  An empty string means that the
  #       associated entity does not require a specific platform.  The
  #       varName argument is the name of a variable in the context of the







<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







698
699
700
701
702
703
704





























705
706
707
708
709
710
711
        }
      }
    }

    return ""
  }






























  #
  # NOTE: This procedure verifies the platform specified by the caller.  The
  #       platform argument must be an empty string -OR- one of the literal
  #       strings "neutral", "win32-arm", "win32-x86", "win64-arm64",
  #       "win64-ia64", or "win64-x64".  An empty string means that the
  #       associated entity does not require a specific platform.  The
  #       varName argument is the name of a variable in the context of the
1091
1092
1093
1094
1095
1096
1097





























1098
1099
1100
1101
1102
1103
1104
    } else {
      file delete -force -- $temporaryDirectory
    }

    return [expr {$compare > 0}]
  }






























  #
  # NOTE: This procedure downloads a manitest from the package file server,
  #       writing its contents to the specified local file name.  It can also
  #       verify the OpenPGP signature.  The language argument must be one of
  #       the literal strings "eagle", "tcl", or "client".  The version
  #       argument must be one of the literal strings "8.4", "8.5", or "8.6"
  #       when the language is "tcl" -OR- the literal string "1.0" when the







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
    } else {
      file delete -force -- $temporaryDirectory
    }

    return [expr {$compare > 0}]
  }

  #
  # NOTE: This procedure attempts to guess a package name based on a list of
  #       its files.  It relies upon the fact that all packages must include
  #       a package index file.  The language argument must be one of the
  #       literal strings "eagle", "tcl", or "client".  The fileNames argument
  #       must be the list of file names to be downloaded.  The package name,
  #       if one can be detected, is returned; otherwise, an empty string will
  #       be returned.
  #
  proc guessPackageNameFromFileNames { language fileNames } {
    set packageIndexFileName [getPackageIndexFileName $language]

    if {[string length $packageIndexFileName] > 0} then {
      foreach fileName $fileNames {
        set fileNameOnly [file tail $fileName]

        if {$fileNameOnly eq $packageIndexFileName} then {
          set directory [file dirname $fileName]

          if {[string length $directory] > 0} then {
            return [file tail $directory]
          }
        }
      }
    }

    return ""
  }

  #
  # NOTE: This procedure downloads a manitest from the package file server,
  #       writing its contents to the specified local file name.  It can also
  #       verify the OpenPGP signature.  The language argument must be one of
  #       the literal strings "eagle", "tcl", or "client".  The version
  #       argument must be one of the literal strings "8.4", "8.5", or "8.6"
  #       when the language is "tcl" -OR- the literal string "1.0" when the
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
    #
    set uri [subst $platformsUri]

    #
    # NOTE: Then, in one step, download the file from the package file
    #       server and write it to the specified local file.
    #
    writeFile $localFileName [getPackageFile $uri]

    #
    # NOTE: Is use of OpenPGP for signature verification enabled?  Also,
    #       did we just download an OpenPGP signature file?
    #
    if {$usePgp && [isOpenPgpSignatureFileName $localFileName true]} then {
      #
      # NOTE: Attempt to verify the OpenPGP signature.  If this fails,
      #       an error is raised.
      #
      ::PackageRepository::openPgpMustBeInstalled

      if {![::PackageRepository::verifyOpenPgpSignature $localFileName]} then {
        error [appendArgs \
            "bad OpenPGP signature \"" $localFileName \"]
      }
    }

    #
    # NOTE: Initialize list of platforms to return.  This will be populated
    #       based on the platform directories available in the downloaded
    #       manfiest data.
    #
    set platforms [list]







|
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<







1128
1129
1130
1131
1132
1133
1134
1135

















1136
1137
1138
1139
1140
1141
1142
    #
    set uri [subst $platformsUri]

    #
    # NOTE: Then, in one step, download the file from the package file
    #       server and write it to the specified local file.
    #
    downloadOneUriToFile $localFileName $uri $usePgp


















    #
    # NOTE: Initialize list of platforms to return.  This will be populated
    #       based on the platform directories available in the downloaded
    #       manfiest data.
    #
    set platforms [list]
1199
1200
1201
1202
1203
1204
1205

































1206
1207
1208
1209
1210
1211
1212
    } else {
      file delete -force -- $temporaryDirectory
    }

    return [lsort -unique $platforms]
  }


































  #
  # NOTE: This procedure downloads a single file from the package file server,
  #       writing its contents to the specified local file name.  It can also
  #       verify the OpenPGP signatures.  When an OpenPGP signature file is
  #       downloaded, this procedure assumes the corresponding data file was
  #       already downloaded (i.e. since OpenPGP needs both to perform the
  #       signature checks).  The language argument must be one of the







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
    } else {
      file delete -force -- $temporaryDirectory
    }

    return [lsort -unique $platforms]
  }

  #
  # NOTE: This procedure downloads a single URI from the package file server
  #       and writes the result to a local file.  The localFileName argument
  #       is the file name where the downloaded file should be written.  The
  #       The uri argument is the URI to download.  The usePgp argument should
  #       be non-zero when the OpenPGP signature file needs to be verified for
  #       the downloaded file.  The return value is undefined.
  #
  proc downloadOneUriToFile { localFileName uri usePgp } {
    #
    # NOTE: Then, in one step, download the URI from the package file
    #       server and write it to the specified local file.
    #
    writeFile $localFileName [getPackageFile $uri]

    #
    # NOTE: Is use of OpenPGP for signature verification enabled?  Also,
    #       did we just download an OpenPGP signature file?
    #
    if {$usePgp && [isOpenPgpSignatureFileName $localFileName true]} then {
      #
      # NOTE: Attempt to verify the OpenPGP signature.  If this fails,
      #       an error is raised.
      #
      ::PackageRepository::openPgpMustBeInstalled

      if {![::PackageRepository::verifyOpenPgpSignature $localFileName]} then {
        error [appendArgs \
            "bad OpenPGP signature \"" $localFileName \"]
      }
    }
  }

  #
  # NOTE: This procedure downloads a single file from the package file server,
  #       writing its contents to the specified local file name.  It can also
  #       verify the OpenPGP signatures.  When an OpenPGP signature file is
  #       downloaded, this procedure assumes the corresponding data file was
  #       already downloaded (i.e. since OpenPGP needs both to perform the
  #       signature checks).  The language argument must be one of the
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
    # NOTE: First, build the full relative file name to download from
    #       the remote package repository.
    #
    set fileName [file join $language $version $platform $fileName]
    set uri [subst $downloadUri]

    #
    # NOTE: Then, in one step, download the file from the package file
    #       server and write it to the specified local file.
    #
    writeFile $localFileName [getPackageFile $uri]

    #
    # NOTE: Is use of OpenPGP for signature verification enabled?  Also,
    #       did we just download an OpenPGP signature file?
    #
    if {$usePgp && [isOpenPgpSignatureFileName $localFileName true]} then {
      #
      # NOTE: Attempt to verify the OpenPGP signature.  If this fails,
      #       an error is raised.
      #
      ::PackageRepository::openPgpMustBeInstalled

      if {![::PackageRepository::verifyOpenPgpSignature $localFileName]} then {
        error [appendArgs \
            "bad OpenPGP signature \"" $localFileName \"]
      }
    }
  }

  #
  # NOTE: This procedure attempts to download a list of files, optionally
  #       persistening them for subsequent uses by the target language.
  #       The language argument must be one of the literal strings "eagle",
  #       "tcl", or "client".  The version argument must be one of the







|
<
<
<
<
<
<
<
<
<
<
<
|
|
<
<
<
<
|
<
<







1250
1251
1252
1253
1254
1255
1256
1257











1258
1259




1260


1261
1262
1263
1264
1265
1266
1267
    # NOTE: First, build the full relative file name to download from
    #       the remote package repository.
    #
    set fileName [file join $language $version $platform $fileName]
    set uri [subst $downloadUri]

    #
    # NOTE: Download the file from the package file server, based on the











    #       final URI.
    #




    downloadOneUriToFile $localFileName $uri $usePgp


  }

  #
  # NOTE: This procedure attempts to download a list of files, optionally
  #       persistening them for subsequent uses by the target language.
  #       The language argument must be one of the literal strings "eagle",
  #       "tcl", or "client".  The version argument must be one of the

Modified client/1.0/neutral/pkgd.eagle.asc from [17f1a65acf] to [cc6c8d5e48].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYFpKcAAoJEFAslq9JXcLZnn0P/iFQYWnBCA+H7GF5of1EOOAH
176D9KBLc0V881vihj0WnJ1YfWCGhkXnqARqy5yv72nBZlTWB6i33ewzJH7gyevZ
F1BqIh1EyV+v2AlAyhTydOlb3JQb07IMM+5eVRVd75TMp4LRr+InOkKfDMCeLuSp
jvcp2iPQPlEpOpEW1echzJgIdEpgfML9cG7pUbyTAY+874yRcffbWlQXfFaPn7OW
6EdENAivX8+V0AAGVlHiWG3tdc0bJBM0Lh58w1mjODLYPGldHRc78vdtcEZXkDzY
CTj8KIItKq7PCuPbTeZMH3X9ChKa5uBVC1a1ivcp8f0Lq8z8vH2MvddnobmWLzYu
YN//pvsOBe+N6EEy61ToKL44pSN0GV5uemRfYu6q4pEIPZtN1oEzrfJfj+DOXM4H
ONenr2hyrPM+8/oeRCars+m1hKWjXYzeRoQ48e0ueiJDKkqxLQBuwxmhDxhJmYbP
/cdpV3EdwNwBhQYJ4GhNK41iecfxpya5SKGR2zqYkkko5JHNacCy+kez768QEBdq
xnRBSfemkb4d5/ZRpsZJl4L07V8cipDgtYOxRL1l/1zD6ay6jsXwosX8kUjbrQyA
5/MfBBvTtfKLg3/w2XTtKFHUNYxzHG19KhxkJ9sUt2PKHHUwD95PKjE3+Ht8mvE/
anQwCmgtFDw6onWlDshg
=x/i7
-----END PGP SIGNATURE-----




|
|
|
|
|
|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYFpwWAAoJEFAslq9JXcLZggkP/14MTnbeV049vwP4MuX4pwdM
NVH9O46E27J1GSrv7gUyCgR01BIcssz9mtVmeKSvN5rOkiM0mtmhmJ5FJV0ks/oa
Nw761c8cE3UmjyIHrAVKPE6godXhIMTtERQR8f6kNURTAkZGR/M79v5AID9H1TuM
2frCj0PZrFNI7xx90QQYCb4My9GGFu5WOZQ4G7woSuxREWCg1sXchLz9UgL3mQUk
iIIohiecz6rwOd1MQVcjDhQrk2cjdSgE9U1ariRsMgLzS89wzWPMeA7BXAJfUV62
AQDNht8BCwfHJPMaAGrql5YwulZWHyE/ubRR7C8LWYHC+ACH08V1WlJDp20kYZr7
+Qf5VaLEvRP8sYaRTbB0tgHuuEPovaBB4eYNH0uZm2uXicXGZ04Z7mFOygwLA4XG
C11mEHp8vgQdpiab19qvewigtvqP2E0YcYYNOVxC09PpLl9nqS6iCOi50JQm2bAa
ekp6G44yDcM2XR63dTqe6ba/jzFPdl+SzmGuuaP1qLbNu8FXtQ4R75gXKx0paL2j
5f75XP/mQSZlLyMpM+uHpY8m0l+DqF4tdD56QMCikYEXpG32WLuVZ20bgA9YOLW1
n8VszwKdG3MJJ7uDgzY/xMkP8Dw0BrwK0PxOYgYs3wG4MxyVCWgB2Ffwz6PQt2uu
b6lU3uKXSq8IP+m+EfMf
=MyaC
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgd.eagle.harpy from [8bbe23a216] to [7c27a35e91].

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>dfe02158-0787-40dc-ab76-b5b3b27db03e</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-10-31T00:36:41.6996407Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>







|


|



|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|


17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>82f5f4f9-254f-4a9a-8abd-e1248267f8b4</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-10-31T01:18:56.2787422Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>

Modified client/1.0/neutral/pkgd.eagle.harpy.asc from [10600fc2ae] to [d141bdb1bf].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYFpKeAAoJEFAslq9JXcLZ14sP/3wW75sAFZEidnnJ5fCALUZJ
43zLj+wDzcPAuY0xaZU5JAVMAcIsr9E8Uxsk+qRMDIeRYpPz27RfxyijN458mfw+
yZJ13QLYYCDEGEqETDYo+x5HljmQYBIP87Bwah3DCpehWFfPuWm1s1qcprXDL6fW
btnRttNQVyPyWHPaIfD5HEvxuCAGXVCZBxtOOlRSTpkfxPKrCcG+hHJWw9XGsqUO
ePoweC1sInehc0jV8O48GHU98T7Lqr9WgZbCk3Bk44Mjs2sCu3U0k4g9D0uOlCp7
WZ/48Y9GIMnIJ/83hQ+ol/qGrokbmPbz893HpHNyK/t5YJ3EQEphoOO7PV5j0Ok9
jXS+fRv8AfkGRvqurqcjf7bMs3iy1dPauiI2af7yORswhwHKScpOlsaXFgkLpvab
mp17nK0mPuPtDJQR+eZcxPwylwxiRmZinqaE79UEN+OmyMv5WJ9VMthkRpgoYP8s
PAp0RpN7tVciTGDpgutpNPIJua2y6+A+O3D6G9WfHPXgvn0hpavd5myaGTw1B7RK
6CgBnOWuRk3JfY7lbgIoQl3Q5GIoVNp09cBKAaEQFKm5iSlb9V4qYd8m7RwfFNCd
feyCH00/Rj8UUzkhwEHOPTBSPw87GQbl5PGWhbKkVAq5tCSk9hfSjNhXrdEJpe2z
l/DlaGTOrgd3cabXuNR5
=gcjH
-----END PGP SIGNATURE-----




|
|
|
|
|
|
|
|
|
|
|
|
|

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYFpwYAAoJEFAslq9JXcLZlIYQAIuOziCkNCHhnmTM/AFAOTVs
upT7EfiWUzrp8ACr/1M2auJ9C6PJppKUr6zUCIR3N6qwvUkr2rrIaZKyEd5fPtc/
YgadpA2NjZlLW2gDFQm5D3nT18vjlKvwgWMcGlOidPs5baxDBTkDQsyOnAyyb/WV
3cLB4qHXhHgEJlMdH81pYMD91g/9+1xbtjiUZtFysGr5YfuwDKCHchErDKL0I9E3
F50365Z3pcpjpM6m2LUMVrR/ebfMrrAAoyKjpGTQsmZIZvJFC5Z8de54z6UxRaHP
mgSMBQVa6K+8m9JM470bRkli6wU9ZqPM4mCNxSFLtOyuimX/k8ZMZNX4SgYhHNmx
r/aZuS92+GxffMchJzzEMBeDZ8b/2Mb6jPdczj6HUqCGqBIQ+f+SscyjUd4RME40
cEsIybns73+kfnhwyH1SZADbUv9qy6/BJgzX1oROu5wgY2CbPnu99keiHfZpLD7i
KtGSmeNkHe5hjx4KQNBXa5bcNbKUBr8ZRFZ5m6N4gmG5TZ/UgVE7e3uOB9yZ5PCz
ARHP+JOo7rgkPGubEo+z+uGJrNEc1Hybt6Kn3UvQ9072R7AegEEamb6Jmr9QJJ/f
AZnkQ60SIcpNxLYpgZ1+MeR25C7F0lFD+OTZ2Rc4FAw0IB/gw0f+u6Ot7UHjZ1dK
vux8XN81W+UtTVZ+gb9m
=Ff3b
-----END PGP SIGNATURE-----