Check-in [0bff0fc24a]
Not logged in
Overview
Comment:Unify the 'unique suffix' handling used by the client packages. Tighten up temporary directory handling, deleting them when possible.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 0bff0fc24a1d61fb3913ee30ae5ab237ed60a234
User & Date: mistachkin on 2016-08-21 03:10:21
Other Links: manifest | tags
Context
2016-08-21
03:25
Set the HTTP redirect limit to 20, per the standard default used by Mozilla. check-in: 3bd1e45c11 user: mistachkin tags: trunk
03:10
Unify the 'unique suffix' handling used by the client packages. Tighten up temporary directory handling, deleting them when possible. check-in: 0bff0fc24a user: mistachkin tags: trunk
2016-08-19
23:27
Add support for checking the installed version of a package prior to downloading it. Also, finish removing the fix applied in check-in [345ffb1dd5] (i.e. removal of the 'm' query parameter). check-in: 8d39ddb985 user: mistachkin tags: trunk
Changes

Modified client/1.0/pkgd.eagle from [8f95de070a] to [db99d690a9].

81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104

    if {![info exists temporaryRootDirectory]} then {
      set temporaryRootDirectory \
          [::PackageRepository::getFileTempDirectory PKGD_TEMP]
    }
  }

  #
  # NOTE: This procedure returns a directory name suffix that is unique to
  #       the running process at the current point in time.  There are no
  #       arguments.
  #
  proc getUniqueDirectorySuffix {} {
    return [appendArgs \
        [string trim [pid] -] _ [string trim [clock seconds] -]]
  }

  #
  # NOTE: This procedure returns the root directory where any packages that
  #       are downloaded should be saved to permanent storage for subsequent
  #       use.  There are no arguments.
  #
  proc getPersistentRootDirectory {} {
    #







<
<
<
<
<
<
<
<
<
<







81
82
83
84
85
86
87










88
89
90
91
92
93
94

    if {![info exists temporaryRootDirectory]} then {
      set temporaryRootDirectory \
          [::PackageRepository::getFileTempDirectory PKGD_TEMP]
    }
  }











  #
  # NOTE: This procedure returns the root directory where any packages that
  #       are downloaded should be saved to permanent storage for subsequent
  #       use.  There are no arguments.
  #
  proc getPersistentRootDirectory {} {
    #
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293


294
295
296
297
298
299
300
    variable clientDirectory
    variable temporaryRootDirectory

    verifyLanguageAndVersion $language $version isClient

    set temporaryDirectory [file join \
        $temporaryRootDirectory [appendArgs \
        pkgd_ver_ [getUniqueDirectorySuffix]]]

    if {$isClient} then {
      set persistentDirectory $clientDirectory
    } else {
      set persistentDirectory $persistentRootDirectory
    }

    set fileName [file join $packageName VERSION]
    set downloadFileName [file join $temporaryDirectory $fileName]

    file mkdir [file dirname $downloadFileName]
    downloadOneFile $language $version $fileName $downloadFileName $usePgp

    if {$usePgp} then {
      downloadOneFile $language $version [appendArgs $fileName .asc] \
          [appendArgs $downloadFileName .asc] $usePgp
    }

    set localFileName [file join $persistentDirectory $fileName]

    if {[package vcompare \
        [string trim [readFile $downloadFileName]] \
        [string trim [readFile $localFileName]]] > 0} then {
      return true
    } else {
      return false
    }


  }

  #
  # 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







|




















|

|
<
<
<
|
>
>







249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279



280
281
282
283
284
285
286
287
288
289
    variable clientDirectory
    variable temporaryRootDirectory

    verifyLanguageAndVersion $language $version isClient

    set temporaryDirectory [file join \
        $temporaryRootDirectory [appendArgs \
        pkgd_ver_ [::PackageRepository::getUniqueSuffix]]]

    if {$isClient} then {
      set persistentDirectory $clientDirectory
    } else {
      set persistentDirectory $persistentRootDirectory
    }

    set fileName [file join $packageName VERSION]
    set downloadFileName [file join $temporaryDirectory $fileName]

    file mkdir [file dirname $downloadFileName]
    downloadOneFile $language $version $fileName $downloadFileName $usePgp

    if {$usePgp} then {
      downloadOneFile $language $version [appendArgs $fileName .asc] \
          [appendArgs $downloadFileName .asc] $usePgp
    }

    set localFileName [file join $persistentDirectory $fileName]

    set compare [package vcompare \
        [string trim [readFile $downloadFileName]] \
        [string trim [readFile $localFileName]]]




    file delete -force -- $temporaryDirectory
    return [expr {$compare > 0}]
  }

  #
  # 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
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
    variable persistentRootDirectory
    variable temporaryRootDirectory

    verifyLanguageAndVersion $language $version isClient

    set temporaryDirectory [file join \
        $temporaryRootDirectory [appendArgs \
        pkgd_lib_ [getUniqueDirectorySuffix]]]

    if {$isClient} then {
      set persistentDirectory $clientDirectory
    } else {
      set persistentDirectory $persistentRootDirectory
    }








|







363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
    variable persistentRootDirectory
    variable temporaryRootDirectory

    verifyLanguageAndVersion $language $version isClient

    set temporaryDirectory [file join \
        $temporaryRootDirectory [appendArgs \
        pkgd_lib_ [::PackageRepository::getUniqueSuffix]]]

    if {$isClient} then {
      set persistentDirectory $clientDirectory
    } else {
      set persistentDirectory $persistentRootDirectory
    }

466
467
468
469
470
471
472




473
474
475
476
477
478
479
    set downloadDirectories [lsort -unique $downloadDirectories]

    if {$useAutoPath} then {
      foreach downloadDirectory $downloadDirectories {
        addToAutoPath $language $downloadDirectory
      }
    }





    return $downloadDirectories
  }

  #
  # NOTE: This package requires the package repository client package.
  #







>
>
>
>







455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
    set downloadDirectories [lsort -unique $downloadDirectories]

    if {$useAutoPath} then {
      foreach downloadDirectory $downloadDirectories {
        addToAutoPath $language $downloadDirectory
      }
    }

    if {$persistent} then {
      file delete -force -- $temporaryDirectory
    }

    return $downloadDirectories
  }

  #
  # NOTE: This package requires the package repository client package.
  #

Modified client/1.0/pkgd.eagle.asc from [624f566b09] to [0eef2aaee4].

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

iQIcBAABCAAGBQJXt5RqAAoJEFAslq9JXcLZcTsQALpS7Eu6mlGbfXKEH/hyL7cI
89NHNHpThrJ972rb8qj8PX7MyCxEaWCuYeumdBLctB68k56f1Mej9NTf8vdV+aJp
NgpGjTwZ0WskmfaI7QbVd4+IyKNoh5+g09rN4T63L11ds0g1BbwF1E2KJL82l0Sv
XeyLAKOvznTOStmuS42ES60Cy1atPTTeqCwU+qmmazz9hxuzUe/QFqcK+1Tj3Yed
mY/+tNjH1jYtGfwfipeMcpGE1jfY7dEXBQW/8i5R89cw99w42MTXvEouEICjZTdc
TX5/woJFXpqDKvr7gdHkJd6IGyXJIOOsBvsOuF2PbSgj3kLGb4I3YOkSS3mZiOcn
kQ89Tr8tz9B936oY/kB+g4ggI3O+e3eXGrBI56NhFZuTMYoIVHuAiHAdZQlWxtQt
Uinqv6/k13auivCBHZ7+Ji+BcIbHuqgXuheDw88XwpL/zRrPsGEwblwrEAIvQDsT
kHcrsh0vW/6uBxy5CGlxt5gaYidtiMqEXBob3uFiFQIfQpS7MXB7a45MMYdT6RYN
kd8pN+mYf58x1joEgnSJSOjHIYayZjPzHMrYBqxl84t8SrzYUCXBDu0edSjj4cAB
0wqJnDlP2Z8DYDfnRSyPla+IsyjKSHMFF24kbMue6OjeBxcdBlhecN0yV+xdEf7B
46u1TdrHuYAJt2E4YzJp
=/psR
-----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

iQIcBAABCAAGBQJXuRlfAAoJEFAslq9JXcLZUUMQAJruUtWluasZooy6kiRLl/St
oiTzswqOWI+QaiOV0YHKAznow8fohJwoEHxaoRMnZJP9ZyWR2kDrWptIzh3QXJzD
GwlEjobjE8mi69MDMSvizBFHPPHy60S5CgcQ2YxqnxGizFVAIBj7br54wAaCfg5M
TAf1i9lrpKAm0FtACMIt+6Lq6CSyRmvGSzNyVArDodrkOUIGAVy2bfvpqnFJDLkF
yK1LuXmTStylQh2miwo66W2h4juPo/GihlFBRa7SHcKXm5UtlotaGCmOUcuuuAyn
eCP2plIoia050muOwO3STO4iQ99XiLecH1jEdarg0wyT11aex0wYI2DPAF9Y3SdP
nOpm+Bap03tMuZeQf7f1eddy0Rmc4JaihfiQnuy+xKJXkCKS1lyj2+UloxrIekFs
2NKDnpGwjc904ZBG/xvIVEA1QEmdCeMEf4hdrrcU3omIgpMGc6xFMa6HHEo2N0NI
/6m7c03UCLHVVBFTm/ma4AWwXtdIAJgSxzquzCIjX4GL+J6c+uLKKnQdFOGIl7NN
Efwpl7hFGAS7b68XduIRc+3KLQf3NBdaCwVMrWMdmhg/fpg/nelLLnyjRcnA+g3P
14fVKqadbATQW3yFenXA0nlKEoUiZyDxpsFkuwa5wTxiNtohSnvHF+NpqPRJ/8Nc
Jv9HII6dHVlnfxmb3W8N
=r9zM
-----END PGP SIGNATURE-----

Modified client/1.0/pkgd.eagle.harpy from [8aaba801f4] to [048cb2694e].

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
    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>c787e54c-9543-4fa4-9d61-ed59debfd70f</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-08-19T23:20:52.9053203Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x2c322765603b5278</Key>
  <Signature>
    dtIbyZb0fgJx0ee+GJqoS4vR8PgZLotiACYhXFarqAaxr965C7yQ9pUvrEVgZpMwKGsqDr0VpwoX
    sHZbHW5M97eTxwUa+Pd2YckJ0tmBaSnc3a7olHwWWLfUHPdgVgmLJw8pMu2TEA1S3zKzzNdehEKS
    2oDz3Dxg6FZG5HqclReIX760hxDohBvJKEODQq6hUKC1SaHsTLNhWt5c+vCpvPgtpK2E2j/sTwR8
    7MWxE8kcNXUH9AqcM7F/1KxdZcMrBhzmmiJowpXIL11wjkO4LheNAyrfr6bJ7LO5+fHMhkLKkNLq
    0mqqABt6/gdNe3EEhNdhy7BUbVLDFk3u8J9HQmbh4soVZeWQT6PqOn2Zq5+z+QvxwechUdK/Jbae
    Htf3ueSNi9Lm93SJhf90SF3JvwcqgdHE5aWdw9ng4EVq5jB0HwPPu0gD7XOUKo6XQko4WOtj4lR3
    K99oi2nUBmv7Z0dJWNN+g+UzD1RpdKWa3sMQxs1b9ZFRPi+r30L3vQjJO0cBp3PsRkWoiV+tj92s
    f4WU4xzejptNMoTT2KH0vgRSgNdAUNJgAzM00jSgBF4tOa2QOVvlmx60YNrRr7NibZoeyqQetOgR
    7G/bxdD+xWJAGs2QfJ9LFk66t9G9Rw9XMuBlIz4jIga93ia7jcwT3GwiYlv2RI5KpnEMSrZ5aLCB
    FxoD4op0jdfAuYvbQNJHNYKnDO4kXhzdxPxX2qjOqJ5XSH+tB9WGtmRiIbqeIlvoeP7x887h+ZnS
    1BT0PBEJC8f/KXZWFn6nQ8FBJN7xTWYKgKnAFAAnl1vJFb7UB9FSe6isPhfcK3lCfL/jbF7gJJfH
    V69uIfMA1O/vNS+3nm+FFM6AsPa16W5uXuykreHR9nhGwN0o+o87D4eWYmN/CkP10rMNOquMvsN0
    HumTEW50lSBhLNrdVh3bujpBv5QfHouCNg1Pn6IcJLLutXXbgH20yyitfWwYb9u6BISHfZshngFw
    LgxAquR8aoJydotC43JpixnJsar7y9+V+V0X2u6kYRA+ePD6DT4KM2K4JEIO0rfiYwMniLFjAN3T
    L7iZ8puaBf/3ENCMKLb7B0vVtkfgb67gJpsuU1UqMeYEyr5rgZnTXx1vG1H2k8U6UBTXXvFJtkWw
    OCrHxaG2w8SPUjY8r1KVEfaHfaxvgaWe8/LQubQWtj0D9qPQqgIUA+MIQeWPZyh2C5hCUraGdqs6
    ZeoKFc+wGyi+5nF35wMkf+ftsiSp1t02EMEmyDIMK95gnGbDDSLWD2Ox46Pk6RvZDkW4sm46ufDf
    XXBBxxtX4uK9h6Jvpw2oVR/P2f9kRYwF0wG8x8vjuXiyn/iDWXBb3oyeo2ImQQGM98JSRlQ1rw==
  </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
    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>5f8e7a47-5763-42b9-9cad-ba43bb3fdc2c</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-08-21T03:00:40.7227031Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x2c322765603b5278</Key>
  <Signature>
    m+B/VfcaYJZ8O5W28u+0fyell7eNN3CRDlgFDwfqt7IswSfLaWlZsmQ0RohZM/Q2bfpwkxOlwRlp
    w9+/8oTkiwnj9gI0ypNWarnog/EMmHkjKr1zbMcJf0MNIrL3TsEcjv75Az2grXhphFpe5vQV2cGY
    yIZ1mNtZ2q9f0vWBUp2RJi3aDJcjfs7DHtecQYkqXmRNOGyKGzCuFaJlB6oAh3qHDkSBK6mLMTvy
    bvj6TKjh/vLlWaBcW+Uzyhm8U6/HgJxYVpsgfq3109w2goDC1liMdaAuJ3Dwox5QAHAyiWNKLx1x
    ymXfti38V6n1F5m7q1BYmOLrz9G6JvVWWUBaDCKaCeiy19sL0fDBCh8hlVrwfJ03B80Xoajtbyds
    Oh8395YnOWygg200ygPSPfQncnLdWomxxZ+1p+8aa5lwIyWG+pBQsf7kPDPyDy9HDglJmN2VT//b
    ISTQgwTq7WIw3nzc/Vc88xwc42EEuZoPoSF7br9DdoG08ek8KzS9Li4UBeJWJzR/zEY0jFLnQjlc
    05ab/83Ic2ilen+KyZ1ZDGlPixvCAWo9uTdypqQdk87L9Jbo1C32TXqdEfGuWFmT+r7UuTwo3ShG
    4mlXsvDKgczwheZHvYNow0DatLXCM+uabZCXTG2YdIAqIdWH9UcdrwIvU6sdN3NVO022AeP9ITPP
    trp+tnVumy/ls8TJD5R6f9AAgXJY51uSjghTaR+4wiNUGhGJ0hUEGRI5hs3OqtUfs06URy2MaTEv
    5/MsMjCkJS5SwwdPIxHRj2JGXLv7WfwntrE85RncbfP56oSc5T/+4zcOfyeZDKZNm5C1pW74UO5X
    C9Oi4Ia0F/Qh74URUKliaomHTYSCEORhBJG+WLirwA3TlztdBuOrzq2Kga8GV21pCJLWMN+f2gEW
    MYmA4bBQEgu1aZ1k6Av6A9gtr+aN5wQHijZNXwyguLJPnv5ti4YZIFimUWaK7WzlCmqOypV/Hs2+
    2FzPvD0Cw/yax38k3vuJEnet4L0zIKCDRQGPIoI4ZFD7bYZkyVPJN6kuayw88s2TEmxJBHIflSjk
    CHbenN8JLwPlj9wJwnP2BocOwN4trfbBigmyLteXjYpDGbXDm95kyGj6mfJPkY2OafIb2P8gKPkN
    uUj8+nVimT263a8pfGJD16x576/qKcdUwCSWPKkAYEH4RFYCxo0aYHMqivyD3nBI3PGJdU6vo9mv
    965IkgyHN/JZCDLmXn0zxfEOB8eB6C6FwYyg1XYPlGCSQLwBF25rp/M+5JN1K1cdOw5ynPdUGlae
    cih1itW/cYD4h1wn7IcqjME8HNvjLyk93H+VmKfrYs+XBW4gOGYxOYytI0SlkyBJ4R9i/s6raw==
  </Signature>
</Certificate>

Modified client/1.0/pkgd.eagle.harpy.asc from [06d6b4e54d] to [2ecc791f14].

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

iQIcBAABCAAGBQJXt5RrAAoJEFAslq9JXcLZJpEP/27cOy348eY7K6yPyIg3c626
c2G0l7EM9Wp+9XuutyI6g2QFf4Y9zjMmsYaNaFFyHM2MC2MPrj3B7g1t9t7p+jPq
o4f6Zt9R1ordVTcD4obKKdjZkn+Ww4F9q6YuKSFBhZ3zT/5DF9arNrC3JhQEL3YB
/eCFqLS1p9hsHWTaT5Tb0uz1wYR2O+dPl74DxOcXSjACixZZPqhWzpxAmXesc2Aq
C51AOg5djF9obIaPIsGEngEEk8///HHSjuJRHZjyu2ugIlMoBUIt4cyJC+wt3v7C
2LcK5C52YuW+WJwUxAN0LAuMNVFsdZSVutYS2I9zAYPMl3MYmW1UIfoFgit5CoIu
sRRyl6uP11bNSAICrfAoSUPn405yFtqCk80bTvOXu6Ager1kg0GGhMFF1uVCl8ap
1UgZIthwqp7o0p5bsqK0L63j5HKEGlNyW9PuWxhmpcegd0nbosA5Yzj3iAeSnv1H
hteHAE9ZiNcBs8BmHifdVxSGfKtuBnG55BzgOzLPTDibmecdAIJCPRTCv4UhPCzw
HW1xzjz4jLArtscskeNw4cPNXAVzJSB1y9mV/iqq+6PJimKwSfzLrpkVuHRlEM+C
3OpyAue+14PKqrD1EIdsZ6Owa3d2dwddbQjsooyjm0180n+LEDR3AWcOxWg0I4Pp
HOMPUI/J6/zxi6Cs3eFQ
=NzCV
-----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

iQIcBAABCAAGBQJXuRliAAoJEFAslq9JXcLZt+8QALJL5AcVSUqcYaR2TylGfXLo
q2VOYml5klSDCuhE633szW8qFI/uxG8+2mHjoq/Ho0lfuOsfuzLJbQIb9miuLc/+
93G9CjvxSQYc1cUyEGMbPpccucRnD8MfJ3un/Tkb/TgDkeuebMXHF4NfcbY9eccm
Lp1uH0KPp85pZla4mmCZyAL3WKJGVczb5wlxOQdydp0LXsVUx3vLZw+sNkwg+8fV
/NPpovJZXSY/m0vA/FBeBYAZ2oAQigTr3Z/jqs2CO38JUEcpVbqtMh9j1/qvuUce
qHiQP0ZaEtq5D+e1zpNahtq8QajgcCx1d4iRvb/jHGhtJg4J7fMImdfBCCMNKuX2
CeDDe0m477Q94ZvObnujsaF0k5RiGEHIdZ7aZwASqykjL7p/wkJ0SZqojDNIBhXI
wnUaQ3Gn0AfsAur2Nhp2p3bfa//jyxR9BueFSn1voSDAqyi3v+okIIZ1U4DNfgB2
9TqZPQuF26WB9FxfZFXZu3KIMh5OfoeAdzmnQvKm6C7O36uQxejkw2ThpTOt22YO
Uh8t0vjLMQ1zKUkAYHM1r/ONXixyS2RnpnXZByFTAxix15AoBr9q/McTtHDBOEae
CKLBUmamBIF5KReXsA5PmasuvtvkSLAGlBpjvIVgrHVj14TEdP+3N637Eb86USVX
C/213vBd5uiJkH25W1A4
=KgJN
-----END PGP SIGNATURE-----

Modified client/1.0/pkgr.eagle from [4d1383c374] to [a8b42f9e5a].

210
211
212
213
214
215
216
217
218
219

220

221
222
223

224

225




226



227
228
229
230
231
232
233
  #       no arguments.
  #
  proc getLookupVarNamePrefix {} {
    return ::pkgr_; # TODO: Make non-global?
  }

  #
  # NOTE: This procedure returns a unique suffix for a fully qualified
  #       variable name that MAY be present in the global namespace.
  #       It is used (internally) to avoid any name collisions with

  #       variables and commands in the global namespace.  There are

  #       no arguments.
  #
  proc getLookupVarNameSuffix {} {

    return [appendArgs \

        [string trim [pid] -] _ [string trim [clock seconds] -] _ \




        [string trim [clock clicks -milliseconds] -]]; # TODO: Bad?



  }

  #
  # NOTE: This procedure returns the list of API keys to use when looking
  #       up packages via the package repository server.  An empty list
  #       is returned if no API keys are currently configured.  There are
  #       no arguments.







|
|
|
>
|
>
|

|
>
|
>
|
>
>
>
>
|
>
>
>







210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
  #       no arguments.
  #
  proc getLookupVarNamePrefix {} {
    return ::pkgr_; # TODO: Make non-global?
  }

  #
  # NOTE: This procedure returns a name suffix (directory, variable, etc)
  #       that is unique to the running process at the current point in
  #       time.  It is used (internally) to avoid name collisions with any
  #       preexisting variables or commands that may be present in the
  #       global namespace.  The paranoia argument represents the relative
  #       level of paranoia required by the caller; the higher this level,
  #       the more uniqueness is required.
  #
  proc getUniqueSuffix { {paranoia 1} } {
    set result [string trim [pid] -]

    if {$paranoia > 0} then {
      append result _ [string trim [clock seconds] -]
    }

    if {$paranoia > 1} then {
      append result _ [string trim \
          [clock clicks -milliseconds] -]; # TODO: Bad?
    }

    return $result
  }

  #
  # NOTE: This procedure returns the list of API keys to use when looking
  #       up packages via the package repository server.  An empty list
  #       is returned if no API keys are currently configured.  There are
  #       no arguments.
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
    if {[isHarpyCertificate $metadata(certificate)]} then {
      #
      # NOTE: Attempt to create a completely unique array variable name to
      #       hold the package metadata in this scripting language as well
      #       as possibly in the other necessary scripting language(s).
      #
      set newVarName(1) [appendArgs \
          [getLookupVarNamePrefix] metadata_ [getLookupVarNameSuffix]]

      set newVarName(2) [appendArgs \
          [getLookupVarNamePrefix] cleanup_ [getLookupVarNameSuffix]]

      set newProcName(1) [appendArgs \
          [getLookupVarNamePrefix] eagleHasSecurity_ [getLookupVarNameSuffix]]

      set newProcName(2) [appendArgs \
          [getLookupVarNamePrefix] getFileTempName_ [getLookupVarNameSuffix]]

      set newProcName(3) [appendArgs \
          [getLookupVarNamePrefix] tclMustBeReady_ [getLookupVarNameSuffix]]

      #
      # NOTE: Create the Eagle script block that will be used to securely
      #       evaluate a signed package script.  This must be evaluated in
      #       Eagle because it uses several plugins only available there.
      #
      set script(outer) [string map [list \







|


|


|


|


|







750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
    if {[isHarpyCertificate $metadata(certificate)]} then {
      #
      # NOTE: Attempt to create a completely unique array variable name to
      #       hold the package metadata in this scripting language as well
      #       as possibly in the other necessary scripting language(s).
      #
      set newVarName(1) [appendArgs \
          [getLookupVarNamePrefix] metadata_ [getUniqueSuffix 2]]

      set newVarName(2) [appendArgs \
          [getLookupVarNamePrefix] cleanup_ [getUniqueSuffix 2]]

      set newProcName(1) [appendArgs \
          [getLookupVarNamePrefix] eagleHasSecurity_ [getUniqueSuffix 2]]

      set newProcName(2) [appendArgs \
          [getLookupVarNamePrefix] getFileTempName_ [getUniqueSuffix 2]]

      set newProcName(3) [appendArgs \
          [getLookupVarNamePrefix] tclMustBeReady_ [getUniqueSuffix 2]]

      #
      # NOTE: Create the Eagle script block that will be used to securely
      #       evaluate a signed package script.  This must be evaluated in
      #       Eagle because it uses several plugins only available there.
      #
      set script(outer) [string map [list \

Modified client/1.0/pkgr.eagle.asc from [59b34bb8f5] to [c4e974eed2].

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

iQIcBAABCAAGBQJXt3P4AAoJEFAslq9JXcLZ9cUQAJmxINYaT0vfSD9/+/g/97gU
+sySDtl0M/EMcdUR7EtxrzW+HYIWF/Mzoq5C82dcbU++rlh0LBl/woOutwd2sYB1
IAVIFgcXj/TJXinX0SPkdMhsti7IkjLukR5A7FHQ6la8ciIewMO5hJKzJLNp00uc
F4LjRfkPdz9IuxYYtbe7O4lBBwWhgGM+ru9QU6BFJLesG59YUeGYijKJh0YUnG7H
pi6zw4GJ/YVkWkZiWwzdzzYrAGh66c7lnOtF1XG2aW7MgwFI3m3EcmcHpihIkNK/
3/WPU2/mhKbP8gMBRW0kJpVBh419LOfH8DKjsc0Rb6eIAoJuKAxdJJHzM3aTT6F/
5SXczMIRTqxXOR7Efv8Vx6ROF5YM6xASs2Jbpr26gTG12jYBCtJ7YJbSFyp/4/7d
qDs40vu9OE44vN8w+19lY0Cy0vqy/2vSSP53OKYUaUnUmXM+LEs8EMrACsO2v5Xf
13r1sbeLLSUiQpxmkVo278hOraO3lG6KL4NFX4S6M+QI+YZ728rDE+dB0dLrXhRF
IpxZimb7z8rR7aHsKJoHjFY2MCZVYmUt+1A47yKNlqiIYqQ6eEpUJqYgBv9nsOo1
fCVls2AaU2TIwdyzONkxO2kMb5jVl+Axj9zq7zg9lle5TCIZ56e2ZP4hw/Y/c6tb
f84Pt4r/npFeKchmU9o3
=SCQW
-----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

iQIcBAABCAAGBQJXuRiEAAoJEFAslq9JXcLZoNsQAIodEzbXccovfFnk7bF8uAip
doioE5IH8suiTrtGsvpuFSqxrB1BW5K4QOvzZY1xLMWwy+NMF6VzvXmJqQTrsNcY
kvUbNUpvrWKA39oWLKiA24RxHqbw15ExdWBbh1+dYkFSZZodSEpdWuPP9GrqbVeU
4dKkRZk8gk8IG9MTDsRy4L3pzZOOl3ggJagVD41QqEZQehhtV1zuHNFtUIZuAkch
QVUtU9q/ahGEtPuFCFkO5IoHlFRpVgDs8XdDwAep0FXeUwTeQmgvwgLdCFDmVJVQ
Xi3+rlBRRYxANJl38e9hgrgsRApTnbo1SAVyhHUXWhGRgV9vwg5NVqMwrBVtsiIW
46uSZl9nVDMw2tOrIHFvdauTUdpisHW04wdvujKv5bmo7oFLhJ1K7XC207XPInE8
RZqJvBfnq4my8COOlPQOmoGFTJvkhIStgjMdfxWRFuXe437qLdj+it/o1TT+VYnN
PISLPY5T9xc/ttJgUmWaqbPVqKcdB9GBhTEh5eX00QmdZTrBTXiUKCpRQGmfyLbb
kOb6aBNeenTPhjCvcmYdPNJe/zFFDJDlZScpU7fCigIE3D303trlZTjX1gR0u9eH
EtC0T+6k1C/eP1IzKLmSwRj80GyjAfHOmO5/StqYnz4L7qlK1e69YCXCSg96ZoFh
GisG2DmVFMneO8WHGx3R
=e2zH
-----END PGP SIGNATURE-----

Modified client/1.0/pkgr.eagle.harpy from [66931dd415] to [27908155b1].

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
    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>b07504e3-cd2f-4f94-a3a4-d3d8af302c9c</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-08-19T21:02:31.7676250Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x2c322765603b5278</Key>
  <Signature>
    RtQ+AEcoC2WHQchJxv9Gltc8InLPW7kMtTc0ggGVSvjZrnd/XRlGxix1u+mLBmTTCEUpkcRGff9s
    VhSH/NWDu2sCVrREYJeEA4uqcBRXjMUeLVczdx2w2wHvLvl6jvKHuzq2q9MFXZnYlDFu21xt/F7d
    UuEY9aNV1i066mAgxnn9TEcJMo3g1BCPG10w3yhjZYXr946ZyW/TFGP2fNKj4xosKEaTQZ/vNZHK
    kMNFzP9nhIJC0Rfk7vzpQaR1x/T34jOhccIFpTAcacjugTLNGvFavqYevWovAsyPvQjH+2InEgB/
    I3nj9VtxFzy0zOvC6Pc/1XaBeyZ2J1wBUU/GEhSSQFKNZlghAp61xOTxn67od+vx7TkE9keH6XOi
    03TgswcMtwMlHPOegJVCOwHUpECP62SnUashSZ/+Rg+J3qNxrAN8S/CqwtByjheYfV8v9+n4WWhK
    T60M1SJ4dt4ijH/1fPaerqL3ZdBdKCsN3TNdatihdjlI91VCwc2L9gC/4qaUlrHqxu1rPKCpuA0u
    ClAj0S07f6LfSu/ynFDt59MSCTRKxAWNAFbETXHcNqisYE4CsStY/VQlRjF4Q3qYlQQ+MQJXglDe
    q7zjnbY8gyJmfkPjsukW+/MK8os1V+yOhtwA7nIaEvCpLodAF0Hqn+IfRdic/QrSHZzA4dRPNPff
    RwGRWztSlWIInXYiXeyjJ+Vcv4oZrsY7L4e/zIHog9eUMXbLobw/XNBunNIctneZj9gZz3Omhlyu
    nMthn3Nzs1k0T6+h7EeW1zud+FiB0PB3v3eW6Dp6OUVquAuLntUlzhyATdahDlbhU8VkYDmBOcDs
    xxHGrsV0XChTs1JtBD1LW84GsJtBVbq0AjYPsNV9g/m41bGXKHmk87yFOebtOdWDdrSXaEs68jlu
    VSkmaJyFqzTh8+ytoL3zDvO0NKbmbeAcsg+pHQDCrEo6kgI80BGzF+88G9NBlQ06349BAbPaoHH8
    BLL+ien03O+XU2d8dWUPiH27Mw/a5TL3Vb7HCwZOmzZMFZw12hT+7d7D415qljGItpWVUblwrnoW
    CHJoOI5yH0N6wph7RQxWY/l8m7U15lY3agMvdg5Ezsrh04qc2oEuNm4unYrj9gLGvIjYnUIXdImX
    JO5Dr8Yp0/wfC7nDgjWfLIUEOX+VuAEw1gJgHaeYmtvxSFYJcHb8iJ+p2hHRCcinlAGd3bTMx/5H
    kOL9wAXz2OqGYIX0mxXu8DTiZ96H29aKJkxR8Y7FysmohjsGJMOZdCjZPNSGFegYWV/7PffYhPDR
    Dc3yJTbOuwPDrrsoxa9hWbc9wFiq+U2OGTD37xSAyhqJ3Qq4B5YqGC7N1iG6IRhhkA36VgdsLg==
  </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
    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>092ce766-385e-409b-be3c-6a3c473551ad</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-08-21T03:01:23.2324687Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x2c322765603b5278</Key>
  <Signature>
    frjSmGUYdZhlFoSSOA3gTxMzwiUOkjfY9ST65h+1hK7of3QagAwpGOzhC2MkceM5Ay/MLoxF4VEH
    dIZbowtNNZKE5rlJUgE52Ek09zY2L2/YD8rixeA3l11+gQ4G8l1pTo1YtDdkp60hAUlcliT7dBOT
    tM2mqhA3aOISuxQOMWQ6r5TFpKvIBKkelU+p7TUgi11Z0ozyCj82eS+4JJblmzN9r7yZ91PD7HXM
    Rby3wgHJUcY181PjUjSedPzJcHJR5E9WTGOXot0j0Iyti+IvzGpOkUZSt0KlT4Mw4Inhfz4lKYla
    S0M6sxeQSJHZbLJvCG8WcPjKFNIKKQT5m477bDmnJV0MHAwmCa0+98MLrtD3AHt8/lw0Q8XhACD+
    6+OaGN1QruIEgbPzWQvlA07Iqi2k1zJV7vWkXgr67JsWoBOv0CO0GGzMQAKrnlYvZDw8NitCP/FI
    zX0E3mBmLNaGVKqk3pm70zInaRog7ibHe6cLLtGi9dkXENwVII6E/ej8r2HLkq3N+FTZWKxEYPTC
    AAbOb0dfPR6iy2fKB+dw4+3RNG1NpVYCx2TIK5o0D0nB8QEL9KwrFEf+VLa8dwM+tcCM2z+kPr/7
    rybNzLgvnSKNzpYUO1jlRFyKOmCxjBDDFJT9/Qse+2UEquZCNO1w/OSQEuZUGAK2AXGcefiIrPXc
    51Fmst3OGuo3P9gFjZ2IVv2CuBjFGgvC7O+NZ6viiTAccybdHcyZkWOvxJdzmG2APiTHWlG+QjKL
    VSwoEAuH7iLDDmpOHCUnR0ykqPjwYMQIMXbG1jWYzmqasNNYqV7BoQchDNFAsAqYxQDewy+YtvEY
    dvpy+/3JcU7SJ9/7mAIWg0RlDK25aqxMo9ho4RbCFL3gkbJzGta+43rLrh2MWXx7MXhlfxrfmS3q
    GlZbQ3/H4qWYVtmxKOL2XPDP+VXXMOQKB9XWjaqJIydyQG0i2tO3yjTR3AwIYvy8xShes5Z90Jbe
    YD5YnlUUZ+C0tzESFybJ79m9v8DCOjA5qJTzOOylwA/5vEgnHVFhpX2QOIsQuQtcMpJ3sVdC5C+w
    OOLVY+PQLVEEetDDLVaj0RnVjJocg3s9jWF50tISehZSIpeykAP2sCJL38nybpJyyvP8fPT/bf9e
    tHYQDzCvg8p8PSXOx/hyZ6ps3nrVG4ZSVEuj8vpm0SaUJAuAyKrfM/6C/dzF3h62jmewYjhY40WS
    CzI5yZIrQv6/dWrHFP9o3F7wMUuw3XmB+7vps/70JJrUid5usMuX9TNGbyv4jYXYktK0b1Xddn0C
    USUNBCNnwC2t+VZbHAG+UT2kYUZl/StfOyBv3IXn8n53GFYXa0RaW1D4Wo9dVBIqThwgGT+imw==
  </Signature>
</Certificate>

Modified client/1.0/pkgr.eagle.harpy.asc from [cb9404ca54] to [9a51e66ea1].

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

iQIcBAABCAAGBQJXt3P4AAoJEFAslq9JXcLZLdkP/1Vuic2CDUdu78RRoGlm4vBa
ALE4Wf1liN6bn2V5i54CoUBzwOVgaWFfNS6qVj+FTeblcGDUvgVbXzzEfjuyRTKK
bIOwM8G6d36Rjq5FZfInJGH0MWkK7LluQob8eVYcxoj02kmrmpxXh44lX3691Mly
YyJQr5vgp+fzWNcpnHXLepKO8kHQcXSK0K9AjPzLxw/9MLA8aTI7dlu1eTDRekPZ
VC4gO37YLJNCii1+/3jZzznYY9OldahuVoEZUzIqLJLICp2J2fvF/1ZrQNERK0rs
iWMg83eiFw6W8YI75NkVqEZkMcjE+z2iXIxZmvNLMxWlYrdXHXRZsx8MACYVifwi
fzVcClqbTQOnCYDnS9dfarDChCVrZ3NS/HhuQBCO2LLAfzbSh/KULvHMa5F4Y7W5
RFkNQWujVqM/nw+9PmV3B7XuWATA3kz8FCjxkxEKs+YMTVFyzl1ReoeakctlCetg
IJkV2AixQ3HKNLdW+j/2syTRcrk/WdUF7+5V9NsT4AgzkB5aSD3/qayKGvLm4qWF
8T5Tqm0xQrBjS2PSeze8k7FR0dNnuWnZSnsbV+S315LQAdETWEw7c2YyQ1zWDNC8
d91MTvwLX4/wkpcaPpLg/HrTRm1GZ5MZuvXQPz+oHGAiP7XJT9+s3aYsLRpvgYeg
TIc24uDcUsSw1m3N1mpn
=JfF/
-----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

iQIcBAABCAAGBQJXuRstAAoJEFAslq9JXcLZYlQQAKQv1vXA+a8NGotJwNnpeAaZ
hfLV2RPTM0dDoGQTGsqGJhlNvb1GF08obFntl1q73Ogf9Mvfl/bUWOFIMZCVrf+N
q8yj7jmcL88uZrphVxw3tGJa+TOZ8a+G92GZZFwTXLfRulitERkeBMhxwNhVNhol
n3DyTmGP3inTAD36hpQjtvZZeOy+XvIa/rvgmOVFXjAK0NPbS5in+KBw83Gup/sN
ZFth1lBMIbuC3B8LDYfZj6nwvs+a2/AdWk8rV2DLyC0Zva6zo4JkG56weKT3WM5a
Cv4TcND8jypTJsyJgr3r7VL7ZXIRqfIDUz8yRIXwV9miAcWmHu6fRdLgkCbr3dDm
Qjh2YYsG4CQbEzdkTom7vrr4fb/OClio3N4CnGZMe+IKt0yYzz58CWEmA1ryKaIU
XLEapGmOjCpS2KwZ7TuCKx08OuEWG8Fxz06JCBIsNNhDu25PBhcW4eN3cgBGn3b1
/GZrZni6eACsEH2MRxcbLocSlJRGgy+8Ko/e3kr8MbBNq3n9g7bb5klDFBuoLCmV
Cl8bU66glJydh8u2sr7BVbeXt3AjL+Ga5ca1Q5p46Ag6sQ74DKjt+wV00epCOBhW
tDc6jcCIplb6M1tN6y3TQNhB7LpT7NB85t73oeer5yfJWOy6wbwKXpS3v+0misHV
5zUMohJkneX3+j+Pcg5y
=2rgt
-----END PGP SIGNATURE-----