Check-in [25cb98f2fe]
Not logged in
Overview
Comment:When storing the directory portion of 'info script', normalize it first. Fixes to the checkout directory handling for staging files in the package uploader client.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 25cb98f2fe8e4f81246641d67744a596e63f876c
User & Date: mistachkin on 2016-12-23 00:15:46
Other Links: manifest | tags
Context
2016-12-23
00:33
In the package uploader client, make sure the language argument is in title case for the repository server metadata and in lower case for the file server directory. check-in: bf5a5e46de user: mistachkin tags: trunk
00:15
When storing the directory portion of 'info script', normalize it first. Fixes to the checkout directory handling for staging files in the package uploader client. check-in: 25cb98f2fe user: mistachkin tags: trunk
2016-12-22
22:56
The 'getRelativeFileNames' procedure requires the maximumLevels argument. check-in: ee4b2e75a2 user: mistachkin tags: trunk
Changes

Modified client/1.0/neutral/pkgd.eagle from [c1156a1489] to [f4bc5e5781].

178
179
180
181
182
183
184
185

186
187
188
189
190
191
192
178
179
180
181
182
183
184

185
186
187
188
189
190
191
192







-
+







    #
    # NOTE: What is the fully qualified path to the directory containing the
    #       package downloader client?
    #
    variable clientDirectory

    if {![info exists clientDirectory]} then {
      set clientDirectory [file dirname $script]
      set clientDirectory [file normalize [file dirname $script]]
    }

    #
    # NOTE: This is the HTTP(S) login cookie to use when downloading files
    #       from the package file server.
    #
    variable loginCookie; # DEFAULT: NONE

Modified client/1.0/neutral/pkgd.eagle.asc from [fc55c91d88] to [097b0d6b3c].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
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

iQIcBAABCAAGBQJYVwVLAAoJEFAslq9JXcLZV4UQAKmMmmr7Dt82toNUwCUjo16M
TvqBNC/u4smP6/SRqcJv/vVWwZ6f4t+DBLDKkW6CcWkkZo9/eG4UTNwugWaGxyzv
5M2IG4BYkNAjadXkYyyr778A5MM3rOoCv5Y3M9AQKGgVFBcxZolAmu6ZCKqFdQpZ
BXRI6n6wPFuzPUtG2KVEP4T95Fw+XHZ0w++JMnM+s8a3eOtDTKkrzJhvFl0wQNcS
xbqQKe6yRriWixH7n5E0ZYqNXpK+/eZWFtJKcTGlN/9qJHGdP20rH+e6Deaur0pT
bZ1NEdINdWgFUTJq+trNhD8RGjNKWfxyli8XZkL3DaYHzRm/bwMvsj1b4+2xj4qp
Y3mBngA6aUXQ4BFdkFc/jCDZfORKe+hfUR+OLRwu62f+ACzVH/tzB0ppUYDsFagM
F/rcy4/Gdoe61IQPHTYgT8YWN7WBdmHfoM+8/vhAZe1rc7cBEr0d2qFHMaPAuop+
ajqV0EOa9hKy7Yv2VIhuEYb724XuT87UHnRMaX/550x+FyAI/1zhhw0E6Uib5vk6
dFtj8uSJasyxMH5Q4uvzMJsAEmHE68IWv8uImsyWIpOd994gN6DCl486/2/D5bWe
QSrej7PStnTClMIjqtqtsOw7Gr7Kl0uwIHubj1fmhJu0Jq7AsKznD432aZnP1MCG
cR1Wr4EgYSr79vX9Cd6s
=Lcfm
iQIcBAABCAAGBQJYXGyDAAoJEFAslq9JXcLZCjAP/Rdfuu9bvBU3wsT6EjsMhuiX
Yx3Qe4M2gQZGgamLw2MCF4uSc5YP1pO2WR8K8d6C5J5BcOIf0P4Zo1knySsn1dan
RAUHLQ8XDJ+W46rYRuCcO25fdGuAXLFyHjeQEk//Uqq/fHBGhLW7hrYhCM1eR1p2
HtXr+lZiHxTFVqTDWk35aK5+NYcd9ofpyMe0LidGeuQq0s75E1EbVBy5BfHfROTg
HC9QTcmcJ8sW/5GJ5Tfl12vD8WxK6AUpuk5bORZkX4EqKqWYYaP1myolND9TwXF4
uWz26qUGCjjRLUF8VOdVQzEvib7SS6rmt/3eg8iU6O0KjFu1ua2QFfPKXVaWsHvw
DxK/r//5ktgDlbk0Fz0Z1qdQNcNG5jyp1CZBHmzuzolj+bjFvMTi2YWVGPAdbj0Z
N70iF+QfK1J7gAdjG8EiVQba3xAEm9pWFX0Qdidoqy83FSgJG//Iu/tzKcessPOl
8gXCYmB1PDlFZq9QdwcYj76cciCU6FQf/xoaWl4ybiNjLz08uLMnHI78q9nuUPVd
zIHNK0XdCfisavUznLd9Ey3SDwBmmY4U6MjPGhTOV51bEZodIa8vyq2r8GjHATJu
Ows0qcN3/ozKHHa8vmGitmCPVBXp4Nc93TM3EvYU/afM1rGleNOqEKhuZhSOfM+s
+Y6oe3TJvwuuXU7SPQ2J
=zWxC
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgd.eagle.harpy from [67e18415a4] to [d8560754b2].

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
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>041a78ad-def2-468e-93e5-a4187d69b9fc</Id>
  <Id>94d758a7-976a-4ff2-9d25-c00a7cd7bb11</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-12-18T21:52:29.3681640Z</TimeStamp>
  <TimeStamp>2016-12-23T00:13:56.0371093Z</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 [5ccaa40c80] to [0e8a373a08].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
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

iQIcBAABCAAGBQJYVwVMAAoJEFAslq9JXcLZAmcQAL6t6rLSpsVOv9oxVowgdcj2
vMiYFiyXbvzqrZhUlfBsalSyrJe1wBHug9C7oZo081v6zvi5WnA5d1CQ8ukRfTyj
i9Ip15U/QsCvPu9sFclhkfUdncJL59rcLSfMxEBpDJsrfIlcFPhK1BtwvmhGtMAm
7kHPYEeqqOj8GQtXUmLoftb1gpqV9c9e3cXd9hwKxFDma/RE/02wv7t83Sd5Jik/
4weq2o541CqXyl0Y5z2HYuwDlNOzEw6kG3NRyoU1MwvfgBW9WOyZd4hhRERcMb3g
71ljRtwfq0sbJv6cGMaJIRziewPHCIW8bGjOAnmGqEqag0yh6YNCm7uf7QodF+bo
G/u4MulM0FI0SvTshLCtbsyE/bA3HC9kRpOL6kVLcCw5V42SjlkAzyS5iZMXfxLG
E/icZXXQRNrhTyfILXAbVQqD2X1knw60QaXHpS5YRNd+9PgUPZIf4k2dykvQdtlX
OfFCbXHgxM9kX59DgzBFJF0yIGC9GEHGaglOxlOm838dpNu0Z0MFgsJcOpz0natZ
Ou1g77F485JhlF0mKOakTr09YDguGIl4KiqiDithalzFhx2K1kaygxIjEyXaiwmp
u/n1QjRDnN6mtgOGqK5X1/VFbvBpTpD61gjUde4FAeD/Qcoqbt0++dLhaUjmnVOs
orCqiEuvvHU2Fko25R/0
=rePc
iQIcBAABCAAGBQJYXGyEAAoJEFAslq9JXcLZuwYQALBmN463PJ9NxMHc3ecSvXW+
Qx6S/SussBUXJV+88sdcHyhPwUkxJ681qcz/DrTRc1HEkDPiIQElnfw0Sm4OzML7
mglW7B7EUzLb9o5HqPTA1c/maz8bD6EvuVZiauc7laQWIK5RbZ9/Gzezc0wW+USd
2ZUIn1ByQu0KGgTPWl/b/ubxcMuF2ptjHeMi4BPhKnhIk+V0D/2vgSZ1SmndIpf5
BBHDJZTp7t49VDcG+hm1hzx05pNAuKuwzd+YDS+dVmiYWW4xpAqbnDWKTprwRjwh
DLxInuEHOmWLnXGoTZ5y/ORgULz8LIC9m9Xrf5jNYWUL4HeDsZkI8YB08bMZrf+U
Ci9hd5QTH/5hnY3+hlQfv3YGc7jeZDVklzwMie9e9nHVE/aO/LWm1Rq2TTO7RoaH
W9zk0EjawYBUJzWPEiCjzEyfvzdWSXgUEsLkPBniyNJBLlVKqUHc/lhKJvkWT6yF
hm8F3az4jWfXebnPihLZajGQtOmWRXjZz2BNMs65gtKRxmKctKLC71RAMtzRENGd
imIjDXnn3fTzrVuuPBqUvfUqBncXHCstH1h98eSGYsshnTL9SIPU2NyHYJ78PvPy
2doTigyoz37JBpuuoXtkfj6mHyzO//zub8UX+k3FBvo2JSie6fiCiLxYkBX9Jyrj
BqqWwmkDVDxg6W76CvJG
=nda7
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgr_upload.eagle from [e3a8e2742f] to [965d609d81].

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
69
70
71
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
69

70
71


72
73
74
75
76
77
78
79
80







-
-
+
+
-

-
+
+
+
+
+
+
+
+
+
+
+











-
-
+
+

-
+

-
-
+
+







  \[language\] \[version\] \[platform\] \[fileName1\] ... \[fileNameN\]"

    exit 1
  }

  #
  # NOTE: This procedure sets up the default values for all configuration
  #       parameters used by the package uploader client.  The script
  #       argument is the fully qualified path and file name for the script
  #       parameters used by the package uploader client.  There are no
  #       arguments.
  #       being evaluated.
  #
  proc setupUploadVars { script } {
  proc setupUploadVars {} {
    #
    # NOTE: This variable must exist and must be the fully qualified path
    #       of the directory containing this script.
    #
    variable pkgr_path

    if {![info exists pkgr_path]} then {
      error "required namespace variable 'pkgr_path' does not exist"
    }

    #
    # NOTE: The project code for the Fossil repository.  This will be checked
    #       prior to staging or committing any files.
    #
    variable projectCode; # DEFAULT: 9ceada8dbb8678898e5b2c05386e73b3ff2c2dec

    if {![info exists projectCode]} then {
      set projectCode 9ceada8dbb8678898e5b2c05386e73b3ff2c2dec
    }

    #
    # NOTE: What is the fully qualified path to the directory containing the
    #       checkout for the package client?
    # NOTE: What is the fully qualified path to the directory containing
    #       package client toolset?
    #
    variable checkoutDirectory; # DEFAULT: <scriptDir>
    variable scriptDirectory; # DEFAULT: <scriptDir>

    if {![info exists checkoutDirectory]} then {
      set checkoutDirectory [file dirname $script]
    if {![info exists scriptDirectory]} then {
      set scriptDirectory $pkgr_path
    }

    #
    # NOTE: The command to use when attempting to check for changes prior to
    #       staging files using Fossil.
    #
    variable fossilChangesCommand; # DEFAULT fossil changes ...
88
89
90
91
92
93
94
95











96
97
98
99
100
101
102
97
98
99
100
101
102
103

104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121







-
+
+
+
+
+
+
+
+
+
+
+







    #
    # NOTE: The command to use when attempting to check the checkout status
    #       prior to staging files using Fossil.
    #
    variable fossilInfoCommand; # DEFAULT fossil info ...

    if {![info exists fossilInfoCommand]} then {
      set fossilInfoCommand {fossil info --chdir {${checkoutDirectory}}}
      set fossilInfoCommand {fossil info --chdir {${scriptDirectory}}}
    }

    #
    # NOTE: The regular expression pattern used when attempting to extract
    #       the root directory for the Fossil checkout.
    #
    variable fossilInfoLocalRootPattern; # DEFAULT: {^local-root:\s+(.*?)$}

    if {![info exists fossilInfoLocalRootPattern]} then {
      set fossilInfoLocalRootPattern {^local-root:\s+(.*?)$}
    }

    #
    # NOTE: The regular expression pattern used when attempting to verify
    #       that the Fossil checkout belongs to the correct project.
    #
    variable fossilInfoProjectCodePattern; # DEFAULT: {^project-code:\\s+...\$}
131
132
133
134
135
136
137
138

139
140
141
142
143
144
145
150
151
152
153
154
155
156

157
158
159
160
161
162
163
164







-
+







    # NOTE: The command to use when attempting to stage package files using
    #       Fossil.
    #
    variable fossilAddCommand; # DEFAULT fossil add ...

    if {![info exists fossilAddCommand]} then {
      set fossilAddCommand \
          {fossil add  --chdir {${checkoutDirectory}} {${fileName}}}
          {fossil add --chdir {${targetDirectory}} {${fileName}}}
    }

    #
    # NOTE: The command to use when attempting to commit package files using
    #       Fossil.
    #
    variable fossilCommitCommand; # DEFAULT fossil commit ...
165
166
167
168
169
170
171


















172
173
174
175
176
177
178
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







    #
    variable verboseMetadataSubmit; # DEFAULT: false

    if {![info exists verboseMetadataSubmit]} then {
      set verboseMetadataSubmit false
    }
  }

  #
  # NOTE: This procedure sets up the default values for all configuration
  #       parameters used by the package uploader client that require the
  #       location of the checkout directory.  There are no arguments.
  #
  proc setupCheckoutVars {} {
    #
    # NOTE: What is the fully qualified path to the root directory of the
    #       Fossil checkout containing the package client toolset?  This
    #       procedure may raise script errors.
    #
    variable checkoutDirectory; # DEFAULT: <checkoutDir>

    if {![info exists checkoutDirectory]} then {
      set checkoutDirectory [getCheckoutDirectory]
    }
  }

  #
  # NOTE: This procedure returns a string value, formatted for use within a
  #       script block being processed by the [string map] command.  The
  #       value argument is the string value to format.  No return value is
  #       reserved to indicate an error.  This procedure may not raise any
  #       script errors.
530
531
532
533
534
535
536



























































537
538
539
540
541
542
543
544
545


546
547
548
549
550
551
552
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+









+
+








      return [eval ::PackageRepository::getFileViaHttp \
          [list $uri] [list 20] [list stdout] [list \
          [expr {!$verboseMetadataSubmit}]] $options]
    }
  }

  #
  # NOTE: This procedure attempts to query the root directory of the Fossil
  #       checkout.  There are no arguments.  An empty string is returned if
  #       the root directory of the Fossil checkout cannot be determined.
  #
  proc getCheckoutDirectory {} {
    variable fossilInfoCommand
    variable fossilInfoLocalRootPattern
    variable scriptDirectory

    if {[isEagle]} then {
      if {[catch {
        eval exec -nocarriagereturns -stdout output -stderr error \
            [subst $fossilInfoCommand]
      } result] == 0} then {
        set result [appendArgs $output $error]
      } else {
        return false
      }
    } else {
      if {[catch {
        eval exec [subst $fossilInfoCommand]
      } result]} then {
        return false
      }
    }

    if {![info exists result] || ![regexp -line -- \
        $fossilInfoLocalRootPattern $result dummy directory]} then {
      return ""
    }

    return [string trim $directory]
  }

  #
  # NOTE: This procedure attempts to verify that the root directory of the
  #       Fossil checkout is present, valid, and is actually a directory.
  #       There are no arguments.  Script errors will be raised if any of
  #       the checks fail.
  #
  proc verifyCheckoutDirectory {} {
    variable checkoutDirectory

    if {![info exists checkoutDirectory]} then {
      error "checkout directory is missing"
    }

    if {[string length $checkoutDirectory] == 0} then {
      error "checkout directory is invalid"
    }

    if {![file isdir $checkoutDirectory]} then {
      error [appendArgs \
          "checkout directory \"" $checkoutDirectory \
          "\" is not really a directory"]
    }
  }

  #
  # NOTE: This procedure attempts to verify that the checkout directory does
  #       not contain any (stray) changes.  There are no arguments.  Non-zero
  #       is returned if the verification is successful.
  #
  proc verifyThereAreNoChanges {} {
    variable checkoutDirectory
    variable fossilChangesCommand
    variable fossilChangesPattern

    verifyCheckoutDirectory

    if {[isEagle]} then {
      if {[catch {
        eval exec -nocarriagereturns -stdout output -stderr error \
            [subst $fossilChangesCommand]
      } result] == 0} then {
        set result [appendArgs $output $error]
571
572
573
574
575
576
577
578
579
580
581

582
583
584
585
586
587
588
669
670
671
672
673
674
675

676
677
678
679
680
681
682
683
684
685
686







-



+








  #
  # NOTE: This procedure attempts to verify that the checkout directory does
  #       belong to the correct project.  There are no arguments.  Non-zero
  #       is returned if the verification is successful.
  #
  proc verifyThisIsTheCorrectProject {} {
    variable checkoutDirectory
    variable fossilInfoCommand
    variable fossilInfoProjectCodePattern
    variable projectCode
    variable scriptDirectory

    if {[isEagle]} then {
      if {[catch {
        eval exec -nocarriagereturns -stdout output -stderr error \
            [subst $fossilInfoCommand]
      } result] == 0} then {
        set result [appendArgs $output $error]
607
608
609
610
611
612
613
614
615
616

617
618
619
620
621
622
623
705
706
707
708
709
710
711

712
713
714
715
716
717
718
719
720
721







-


+








  #
  # NOTE: This procedure attempts to verify that the checkout directory does
  #       belong to the correct branch.  There are no arguments.  Non-zero
  #       is returned if the verification is successful.
  #
  proc verifyThisIsTheCorrectBranch {} {
    variable checkoutDirectory
    variable fossilInfoCommand
    variable fossilInfoTagsPattern
    variable scriptDirectory

    if {[isEagle]} then {
      if {[catch {
        eval exec -nocarriagereturns -stdout output -stderr error \
            [subst $fossilInfoCommand]
      } result] == 0} then {
        set result [appendArgs $output $error]
645
646
647
648
649
650
651


652
653
654
655
656
657
658
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758







+
+







  #       directory.  There are no arguments.  This procedure may raise
  #       script errors.
  #
  proc changeToTheCorrectBranch {} {
    variable checkoutDirectory
    variable fossilUpdateCommand

    verifyCheckoutDirectory

    if {[isEagle]} then {
      if {[catch {
        eval exec -success Success [subst $fossilUpdateCommand]
      } error]} then {
        error [appendArgs \
            "could not change branch: " $error]
      }
671
672
673
674
675
676
677


678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696

697
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
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796


797






798



799


800
801

802
803


804
805
806
807


808
809
810
811
812
813
814
815
816
817
818
819
820
821
822







+
+

















-
-
+
-
-
-
-
-
-
+
-
-
-
+
-
-
+

-
+

-
-
+

+
+
-
-
+
+
+
+
+
+
+
+







  #       Fossil.  The fileNames argument is a list of (fully?) qualified
  #       local file names to stage.
  #
  # <public>
  proc stagePackageFiles { language version platform fileNames } {
    variable checkoutDirectory
    variable fossilAddCommand

    verifyCheckoutDirectory

    if {![verifyThereAreNoChanges]} then {
      error "cannot stage files: there are pending changes"
    }

    if {![verifyThisIsTheCorrectProject]} then {
      error "cannot stage files: wrong project"
    }

    if {![verifyThisIsTheCorrectBranch]} then {
      changeToTheCorrectBranch

      if {![verifyThisIsTheCorrectBranch]} then {
        error "cannot stage files: still on wrong branch"
      }
    }

    set newFileNames [list]

    set targetDirectory [file join \
    foreach fileName $fileNames {
      if {![::PackageRepository::createOpenPgpSignature $fileName]} then {
        error [appendArgs \
            "cannot stage file \"" $fileName "\": OpenPGP signing failed"]
      }

        $checkoutDirectory $language $version $platform]
      lappend newFileNames $fileName
      lappend newFileNames [appendArgs $fileName .asc]
    }


    set relativeFileNames [getRelativeFileNames $newFileNames 2]
    set relativeFileNames [getRelativeFileNames $fileNames 2]

    foreach fileName $newFileNames relativeFileName $relativeFileNames {
    foreach fileName $fileNames relativeFileName $relativeFileNames {
      file mkdir [file join \
          $checkoutDirectory $language $version $platform \
          [file dirname $relativeFileName]]
          $targetDirectory [file dirname $relativeFileName]]

      set checkoutFileName [file join $targetDirectory $relativeFileName]

      file copy $fileName \
          [file join $checkoutDirectory $relativeFileName]
      file copy $fileName $checkoutFileName

      if {![::PackageRepository::createOpenPgpSignature \
          $checkoutFileName]} then {
        error [appendArgs \
            "could not stage file \"" $fileName \
            "\": OpenPGP signing failed"]
      }

      set fileName $relativeFileName; # NOTE: For [subst].

      if {[isEagle]} then {
        set fileName [::PackageRepository::formatExecArgument $fileName]

        if {[catch {
743
744
745
746
747
748
749


750
751
752
753
754
755
756
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858







+
+







  #       caller that will receive the resulting Fossil check-in identifier.
  #
  # <public>
  proc commitPackageFiles { package patchLevel language version varName } {
    variable checkoutDirectory
    variable fossilCommitCommand
    variable fossilCommitPattern

    verifyCheckoutDirectory

    set branch [appendArgs pkg_ $package _ $patchLevel]

    set comment [appendArgs \
        "Add package " $package " v" $patchLevel " for " $language \
        " v" $version .]

1263
1264
1265
1266
1267
1268
1269

1270
1271
1272
1273
1274
1275
1276
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379







+







  #       and Tk.  The existing argument data, if any, will be used to
  #       populate it.  There are no arguments.
  #
  proc setupTkUserInterface {} {
    variable widgets

    package require Tk
    catch {console show}

    catch {wm withdraw .}; set toplevel [toplevel .uploader]
    set widgets(toplevel) $toplevel

    ###########################################################################

    set widgets(label,apiKey) [label [appendArgs \
1427
1428
1429
1430
1431
1432
1433
1434


1435
1436
1437
1438
1439
1440
1441
1530
1531
1532
1533
1534
1535
1536

1537
1538
1539
1540
1541
1542
1543
1544
1545







-
+
+







  #       one or more of the variable setup in the next step.
  #
  ::PackageRepository::maybeReadSettingsFile [info script]

  #
  # NOTE: Setup the variables, within this namespace, used by this script.
  #
  setupUploadVars [info script]
  setupUploadVars
  setupCheckoutVars

  #
  # NOTE: Provide the package to the interpreter.
  #
  package provide Eagle.Package.Uploader \
    [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}]

Modified client/1.0/neutral/pkgr_upload.eagle.asc from [394d6989b0] to [f3ce902234].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
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

iQIcBAABCAAGBQJYXFoOAAoJEFAslq9JXcLZhMkQAJZtIZkYABGbmvvDDD+R0RV9
iskYSLYaXomMUZdpQd1FKHYwK0GrvDx2UsUfpz7MFp723Go82PTxZ8BtPdkTs+dD
dKxRCJXD3zRM9xsmj1tsYdWHnWPpzBS7aJZWaobeuwdOp+7kHU3y2hgfOAjfuuGB
6JI56KLVPjmA48hlguJxs3nNgSBphTZeW1RGA8vaW5087l/qypG4DH5I83FecxJg
yBAdag85arOIVPZqL+pxAGNtf2NUqdGciXiJRyTOMW9/a7PeBgH5p++osN7Q4ZLJ
WX+f6oCrxpcGR7bRlRicWMcDUnIee3bme3D4OR8uPLv/3nlZ5UUeDH95kECreVrT
w9xEFZDgsGb7kpnvCHDdoBKkC+3n/o0pg6Q23z8rpLCNTUbp6UfA+Spq2ST8kNvT
+hws3NIqPTVn5mQGQY1YXQdtiWLtTl7tovp0GRDiLuSiDhV+vCPHjwWcMeR7YdOj
7PtXVAzjms6TSptZXVMEzdyclAo5qqgQuktxkSJ/A32sScPxLq0GHUelVn9VtRkn
Vhdle07fQxVsvpN1CqO9/pjLTJAnqGzydnfLt+doqDdr1oackgsSxROBdh1t/oL0
a3doJGlzqbHrkVZymdvGVF5zAH21A5PuPMwoOd0kopX2aGN6hJPgobY8vNn3ALdr
XEsEeb9cRyogLstDGJBq
=ebKD
iQIcBAABCAAGBQJYXGyLAAoJEFAslq9JXcLZPWAQAIMhs597RSgvxqPSr+cly9ly
94jryba6xA+sDtK3auL2aMYHCD6cAJn1TbzG+aGslIVvfQB9Os5R4JmH+GLSU7/I
5jhPEDAGoDSFtBOw5Nc7BstqKb2/mVoJte3FX/2xU1xphBo0cWc4lRVAovSTnuXr
O9Wlx9tDV6uKsqQIf/t0vIZc2l85kgnj5xADyoTxVxA4K/1Ehy21QU6EGP/5T28D
X7L0bF0Q50O/UpUgz7QTTbw1emf9Ahz72fzk/mhrH/PO/K87f9zI5Y+vJMxBSYCY
q1h3vJ+u4mZ/9153uK5QHUT7tyjri7hOFd/yNq2fh+nzSr3Lhdqa3mhmBQtVbN1y
K406dUm4lMgzT9NAA44xzo2qM5e69xMt5fwFLMcd9WaFP8gxwpdZkg28GdWqJ0p+
LHUkvBFZVmp6pifSi7sZBwjUA82SMbx7DcjBgfdv4wVYZi1iZKsZFvFw+AW/AyjA
6abqIsQHB928SfJKGHWzM8JXhGl/JxmyD4varICU5Q4kYqkGscCg9qCybnJFKEY5
zTmt8XQdkYcMEQMlNmvK212tiS/r8EwlgjkaE9NnSA/2g2PD4nMe1/IS/yOez0eY
TgJ+22d4SLZu2ZZi7wBwPgC9DTY+A8mvzb9lJZJznHVAgZTSm9d8N1jpLg8NsPwK
6ueeyqj51QE3LX+UrRQQ
=ncuN
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgr_upload.eagle.harpy from [5f684facb7] to [3beb1aadec].

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
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>76236cbb-7d78-47c9-a22d-ea0ab7a4cfe7</Id>
  <Id>c753e05e-94b3-46c6-9637-d398c4848b3a</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-12-22T22:55:52.5244140Z</TimeStamp>
  <TimeStamp>2016-12-23T00:14:28.8095703Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>

Modified client/1.0/neutral/pkgr_upload.eagle.harpy.asc from [e080d5dfec] to [8ae3346a0c].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
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

iQIcBAABCAAGBQJYXFoQAAoJEFAslq9JXcLZRmQP/i/Sa/NP1M5809LMqoB4R/Rz
DmyeRvRHkHS4A9C0lGkMjUIawnQ0boYP5vKU1FBPaFWnIzBbED8qZhvH5K+pzf7d
RJ7XXtA151uHZdfVrydB+zMo2QUy39BA4ncXjdiW3CKniNoEJzdLQirN41c6kiGN
3JbdF3eEADJF3YABfD/qCUeAiPYGOxqQd+hezJW7ste3EN0eX2H3mQtU+CTbQIx7
WM0EcSesrtPIS44OreGu8vhFiTr9cCwwK0WjTeS8i3goaWtXsYao+8g5WK4qVUTV
EkkENNjB60lUNvArbE+BEIvyOzaqs9lV827PyxkeLB1Z0uWO+WVV9eKow9++SaVL
ujRE8O88SInWgZh2bzIDjOI2MUAkYOd29oAxnfkL5hTQfqNWc8SGHNEZNTPyrptw
+brKA7v8yO7CGM9Girdv1QpCQvE3RSx+nDeMLZugpYDIT9ODSlXQWDc5+Knj8+zu
Ydtw8KTNLCqSaPx+GoPBJPccQm/YC+IFmI/i4y9apGETjrocHYtrSJA/DS1rpZNW
SNEd6QgsZpBd9ohTUgRO/c8D37DJDxQH7gC/M0eFhfSqqQOVgSBbAVKEGcEOiTNc
zILYC0H54mkLBj5jrBTn3SnkqkTpFYVegTZhzh+kuf39OocXdxUO22pN0MdgaXJH
5YBgraPu4dkN9s/dOSh9
=LMEm
iQIcBAABCAAGBQJYXGyNAAoJEFAslq9JXcLZFdgP/imj8lRtavoWbsVhRu2p19Sv
xZYaHTrhFW/V6j7Iprpn9nufeB27jsocKk7hMTQcD+WfH6cTVK9JvvhXKei2fh1C
ayU/eFpdM+bh/O6C0fNHA+KIQK4HVpBQjQQH/dJJNZoj9C5S5bbZcSTrEmf1sQ36
ahSsTalLSyjQrlw1nTaKsMyWGHrZWKERgPwh5r3L368AvjotdyAc5tVCo72Q1fF1
rKXR4aVtOzialmrITBQvzGpGmSDCrDkpbhZ8XSPE2fAnp93aWN6jJNHC/Nu9BX85
yn52+VIocArMuxh1USLEuSXKveQbgzrsX+wkdwY4VbqvQfnUPV74yM6gvJuNFWxQ
+imtptEXCIEUUFIfcMJSfMiT9MXztKPbSTMpjJumoepwRDffho2vZO973fgXAQVX
qmwxZ+a7peTt5/oIJY9nYyuMT7PsfhpfvC9QtZCVk5ELm9JQFjjG3yu+Ut63y52n
qEKC0xxJtfV2Pe2qiWHBn40FTCSVPqeGtDuKcL1DN+OL1iot0neeDcDoAGkEosJt
kL2Yb8K3X53QjF+8Q8wn/2KjcUogM0kJfR7Omhaj0qu7EpJty1E1RmTD2j4vanK1
7POWcEikZVKe4U7daDDAAAaEsJvDScu+SGk6j2tGFNHuUIRytwAeOrElJuPq3Xsu
e61zVr/Mq2PLsL0ftxWV
=ALy9
-----END PGP SIGNATURE-----