System.Data.SQLite
Check-in [c0130ce3d6]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Pickup more release archive verification tool changes from upstream.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:c0130ce3d6b7c11437e9ac7909eca77bf1fe6570
User & Date: mistachkin 2018-06-24 21:52:01
Context
2018-07-01
19:17
Adjust some conditional compilation checks in order to include .NET Core. check-in: e6b998e04a user: mistachkin tags: trunk
2018-06-24
21:52
Pickup more release archive verification tool changes from upstream. check-in: c0130ce3d6 user: mistachkin tags: trunk
03:23
Remove accidental debugging change leftover from the previous check-in. check-in: 566f1e9d23 user: mistachkin tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to Setup/verify.eagle.

72
73
74
75
76
77
78




79
80
81
82
83
84
85
...
329
330
331
332
333
334
335
336
337
338



339
340
341
342
343
344
345
...
390
391
392
393
394
395
396

397


398
399
400
401
402
403

404
405
406
407
408
409
410
...
509
510
511
512
513
514
515

516
517
518
519



520
521


















522





523
524

525
526
527
528
529
530
531

  if {[regexp -- {[0-9a-f]{64}} $hash]} then {
    return $hash
  }

  return ""
}




 
proc getExecCommandPrefix {} {
  return [list exec -success Success -nocarriagereturns --]
}
 
proc combineErrors { error1 error2 } {
  return [appendArgs \n\n $error1 \n $error2 \n]
................................................................................
            \"%fileName%\" -d \"%directory%\"
      }

      set extractCommand(2) [list error "no fallback extract command"]
    } elseif {[file extension $archiveFileName] eq ".exe" && \
        [string match -nocase *Setup*.exe $manifest]} then {
      #
      # HACK: Assume this is an Inno Setup package and process
      #       it using one of the appropriate tools, which are
      #       currently limited to "innounp" or "innoextract".



      #
      set listCommand(1) [getExecCommandPrefix]

      if {[lindex $listCommand(1) 0] ne "error"} then {
        lappend listCommand(1) $innounp -v \
            [file nativename $archiveFileName]
      }
................................................................................

      set extractCommand(2) [list error "no fallback extract command"]
    }

    if {[catch {
      set data [eval $listCommand(1)]
    } error1] == 0 || [catch {

      #


      # NOTE: The "innoextract" tool does not use the curly
      #       braces around the "{app}" directory name.
      #
      set data [string map [list \
          app\\ [appendArgs {{app}} \\] tmp\\ [appendArgs {{tmp}} \\]] \
          [eval $listCommand(2)]]

    } error2] == 0} then {
      #
      # HACK: The Inno Setup unpacking tool requires some extra
      #       parsing logic to handle the output.
      #
      set containedFileNames [list]

................................................................................
              set extractCommandMap [list \
                  %fileName% [file nativename $manifestFileName] \
                  %directory% [file nativename $extractDirectory]]

              set data [eval \
                  [string map $extractCommandMap $extractCommand(1)]]
            } error1] == 0 || [catch {

              #
              # NOTE: The "innoextract" tool does not use the curly
              #       braces around the "{app}" directory name.
              #



              set extractCommandMap [list \
                  %fileName% [file nativename [string map [list \


















                  [appendArgs {{app}} \\] app\\ [appendArgs {{tmp}} \





                  \\] tmp\\] $manifestFileName]] %directory% [file \
                  nativename $extractDirectory]]


              set data [eval \
                  [string map $extractCommandMap $extractCommand(2)]]
            } error2] == 0} then {
              if {[string length $hashes($manifestFileName)] == 64} then {
                set hash [getSha3Sum $extractFileName]
              } else {







>
>
>
>







 







|
|
|
>
>
>







 







>
|
>
>
|
|
|
|
<
<
>







 







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







72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
...
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
...
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411


412
413
414
415
416
417
418
419
...
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568

  if {[regexp -- {[0-9a-f]{64}} $hash]} then {
    return $hash
  }

  return ""
}
 
proc getInnoSetupRootMap {} {
  return [list app\\ [appendArgs {{app}} \\] tmp\\ [appendArgs {{tmp}} \\]]
}
 
proc getExecCommandPrefix {} {
  return [list exec -success Success -nocarriagereturns --]
}
 
proc combineErrors { error1 error2 } {
  return [appendArgs \n\n $error1 \n $error2 \n]
................................................................................
            \"%fileName%\" -d \"%directory%\"
      }

      set extractCommand(2) [list error "no fallback extract command"]
    } elseif {[file extension $archiveFileName] eq ".exe" && \
        [string match -nocase *Setup*.exe $manifest]} then {
      #
      # HACK: There is some special handling needed for dealing with
      #       setup packages, which are currently always created with
      #       the Inno Setup tool.  The two tools that can be used to
      #       verify the contents of these packages are "innounp" and
      #       "innoextract".  Since this archive file name looks like
      #       one that contains a setup package, assume that it is.
      #
      set listCommand(1) [getExecCommandPrefix]

      if {[lindex $listCommand(1) 0] ne "error"} then {
        lappend listCommand(1) $innounp -v \
            [file nativename $archiveFileName]
      }
................................................................................

      set extractCommand(2) [list error "no fallback extract command"]
    }

    if {[catch {
      set data [eval $listCommand(1)]
    } error1] == 0 || [catch {
      set data [eval $listCommand(2)]

      if {$isSetup} then {
        #
        # HACK: The "innoextract" tool does not use the curly
        #       braces around the "{app}"-style directory names.
        #
        set data [string map [getInnoSetupRootMap] $data]


      }
    } error2] == 0} then {
      #
      # HACK: The Inno Setup unpacking tool requires some extra
      #       parsing logic to handle the output.
      #
      set containedFileNames [list]

................................................................................
              set extractCommandMap [list \
                  %fileName% [file nativename $manifestFileName] \
                  %directory% [file nativename $extractDirectory]]

              set data [eval \
                  [string map $extractCommandMap $extractCommand(1)]]
            } error1] == 0 || [catch {
              if {$isSetup} then {
                #
                # HACK: The "innoextract" tool does not use the curly
                #       braces around the "{app}"-style directory names.
                #
                set altManifestFileName [string map [getInnoSetupRootMap] \
                    $manifestFileName]

                set extractCommandMap [list \
                    %fileName% [file nativename $altManifestFileName] \
                    %directory% [file nativename $extractDirectory]]

                #
                # HACK: The "innoextract" tool uses the full manifest
                #       file name when writing the extracted file, so
                #       adjust the extracted file name to match it;
                #       however, first verify that the path type of
                #       the manifest file name is relative.
                #
                if {[file pathtype $altManifestFileName] eq "relative"} then {
                  set extractFileName [file normalize [file join \
                      $extractDirectory $altManifestFileName]]

                  catch {
                    file attributes $extractFileName -readonly false
                    file delete $extractFileName
                  }
                } else {
                  error [appendArgs \
                      "path type for manifest file name \"" \
                      $altManifestFileName "\" is not relative"]
                }
              } else {
                set extractCommandMap [list \
                    %fileName% [file nativename $manifestFileName] \
                    %directory% [file nativename $extractDirectory]]
              }

              set data [eval \
                  [string map $extractCommandMap $extractCommand(2)]]
            } error2] == 0} then {
              if {[string length $hashes($manifestFileName)] == 64} then {
                set hash [getSha3Sum $extractFileName]
              } else {