Overview
Comment: | Various fixes related to package version checking and OpenPGP integration. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
1ba61d8533776823b3ef1bdbb069d1bb |
User & Date: | mistachkin on 2020-03-27 20:58:08 |
Other Links: | manifest | tags |
Context
2020-03-27
| ||
21:03 | Update generated documentation. check-in: 63c15d9539 user: mistachkin tags: trunk | |
20:58 | Various fixes related to package version checking and OpenPGP integration. check-in: 1ba61d8533 user: mistachkin tags: trunk | |
2020-03-26
| ||
15:12 | Add more comments. Closed-Leaf check-in: ffccb611a3 user: mistachkin tags: pending | |
2019-12-02
| ||
22:06 | Fix typos in the Harpy 'sign' tool. check-in: b2ec485564 user: mistachkin tags: trunk | |
Changes
Modified client/1.0/neutral/pkgd.eagle from [a8520a0f88] to [eff6e99d05].
︙ | ︙ | |||
1261 1262 1263 1264 1265 1266 1267 | # # NOTE: This procedure issues a request to an HTTP(S) server. It returns # the raw response data verbatim. It may raise a script error. It # will always use the currently configured HTTP(S) login cookie, if # any; therefore, it should really only be used for requests to the # package file server. The uri argument is the fully qualified URI | | > | | 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 | # # NOTE: This procedure issues a request to an HTTP(S) server. It returns # the raw response data verbatim. It may raise a script error. It # will always use the currently configured HTTP(S) login cookie, if # any; therefore, it should really only be used for requests to the # package file server. The uri argument is the fully qualified URI # to request. The allowHtml argument should be non-zero if raw HTML # should be allowed in the response data. # proc getPackageFile { uri {allowHtml false} } { variable loginCookie variable quiet if {[isEagle]} then { if {![info exists ::eagle_platform(compileOptions)]} then { error "missing compile options from Eagle platform array" } |
︙ | ︙ | |||
1301 1302 1303 1304 1305 1306 1307 | if {[info exists loginCookie] && [llength $loginCookie] == 2} then { set script [object create String { if {[methodName ToString] eq "GetWebRequest"} then { webRequest Headers.Add Cookie [join $loginCookie =] } }] | | | | > > > > > > > > > > > | 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 | if {[info exists loginCookie] && [llength $loginCookie] == 2} then { set script [object create String { if {[methodName ToString] eq "GetWebRequest"} then { webRequest Headers.Add Cookie [join $loginCookie =] } }] set data [uri download -inline -webclientdata $script -- $uri] } else { set data [uri download -inline -- $uri] } } else { set options [list -binary true] if {[info exists loginCookie] && [llength $loginCookie] == 2} then { lappend options -headers [list Cookie [join $loginCookie =]] } set data [eval ::PackageRepository::getFileViaHttp \ [list $uri] [list 20] [list stdout] [list $quiet] $options] } # # HACK: Check for the typical Fossil error response(s), which is an # HTML page that may contain something like "Artifact 'X' does # not exist in this repository"). # if {!$allowHtml && [string range $data 0 14] eq "<!DOCTYPE html>"} then { error "bad package file response data, appears to be HTML page" } return $data } # # NOTE: This procedure returns the prefix for fully qualified variable # names that MAY be present in the global namespace. There are # no arguments. # |
︙ | ︙ | |||
1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 | "returning temporary directory name \"" $result \ "\" for prefix \"" $prefix \"...] } return $result } # # NOTE: This procedure checks if there is a higher version available of the # specified package on the package file server. 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 language is either "eagle" or "client". The platform argument | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 | "returning temporary directory name \"" $result \ "\" for prefix \"" $prefix \"...] } return $result } # # NOTE: This procedure creates a new interpreter, which may be "safe", and # places a reference to it in a variable in the context of the caller # identified by the varName argument. The created interpreter has a # fully functioning [package] command ensemble; all other commands do # nothing and return nothing. This procedure may raise script errors. # proc createInterp { varName } { # # NOTE: Prepare to provide the caller with the newly created interpreter # reference. # upvar 1 $varName interp # # NOTE: Create a "safe" interpreter and set the global "dir" variable to # a single period. Generally, this is the only variable used by a # package index file. It should be noted that since [set] will be # a NOP, attempts to use other variables in the specified package # index file (e.g. ones [set] within it) will fail. # set interp [interp create -safe] interp eval $interp [list set dir .] # # NOTE: First, obtain the list of child namespaces to delete, if any, and # then delete them all. This should leave the global namespace and # its commands / variables untouched. # set namespaces [interp eval $interp [list namespace children ::]] foreach namespace $namespaces { catch { interp eval $interp [list namespace delete $namespace] } } # # NOTE: Next, obtain the list of global commands and delete all of them # except the [proc] and [package] commands. The [proc] command is # handled specially (last) and the [package] command is retained. # set commands [interp eval $interp [list info commands]] foreach command $commands { if {$command ne "proc" && $command ne "package"} then { interp eval $interp [list proc $command args ""]; # NOP } } if {![isEagle]} then { # # HACK: The "safe" interpreters in native Tcl do not contain # the [file] command at all, not even for [file join] # and [file split], which may be used in package index # files; therefore, add it as a NOP command. # interp eval $interp [list proc file args ""]; # NOP } # # NOTE: Next, disable the [proc] command. This must be done last # because it is used to disable (i.e. via NOP) all the other # global commands. # interp eval $interp [list proc proc args ""]; # NOP # # NOTE: Finally, return nothing as the created interpreter reference # is placed directly into the variable specified by the caller. # return "" } # # NOTE: This procedure evaluates a script file and attempts to determine the # list of new [package ifneeded] scripts added by it. When successful # it returns a list-of-lists. Each element of the outer list contains # a package name and the list of its versions in descending order; in # the event of failure, empty lists may be returned for the outer list # or for a list of versions. The interp argument is the interp to use # when evaluating the file specified by the fileName argument. This # procedure may raise script errors. # proc getIfNeededVersions { interp fileName } { set result [list] set oldPackageNames [interp eval $interp [list package names]] interp invokehidden $interp source $fileName; # [package ifneeded], etc. set newPackageNames [interp eval $interp [list package names]] foreach packageName $newPackageNames { if {[lsearch -exact $oldPackageNames $packageName] == -1} then { lappend result [list $packageName [lsort -decreasing \ -command [list package vcompare] [interp eval \ $interp [list package versions $packageName]]]] } } return $result } # # NOTE: This procedure attempts to extract a package version information # from the specified file. The fileName argument is the local file # name to read. This procedure may raise script errors. # proc extractVersionsFromFile { fileName } { switch -exact -- [file tail $fileName] { VERSION { return [list [string trim [readFile $fileName]]] } pkgIndex.eagle - pkgIndex.tcl { # # TODO: Evaluate the package index file in a new "safe" # interpreter and obtain the newly added [package # ifneeded] version(s)? # if {[catch {createInterp interp} error] == 0} then { set result [getIfNeededVersions $interp $fileName] } else { pkgLog [appendArgs \ "could not create interp to extract versions: " \ $error] set result [list] } if {[info exists interp]} then { catch {interp delete $interp} unset interp; # REDUNDANT } return $result } } } # # NOTE: This procedure checks if there is a higher version available of the # specified package on the package file server. 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 language is either "eagle" or "client". The platform argument |
︙ | ︙ | |||
1549 1550 1551 1552 1553 1554 1555 | if {$isClient} then { set persistentDirectory $clientDirectory } else { verifyPersistentRootDirectory set persistentDirectory $persistentRootDirectory } | > > > | | | > | | | | | | | | | | | | | | | | | | > > > > | 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 | if {$isClient} then { set persistentDirectory $clientDirectory } else { verifyPersistentRootDirectory set persistentDirectory $persistentRootDirectory } set fileNamesOnly [list VERSION pkgIndex.eagle pkgIndex.tcl] foreach fileNameOnly $fileNamesOnly { set fileName [file join $packageName $fileNameOnly] set downloadFileName [file join $temporaryDirectory $fileName] file mkdir [file dirname $downloadFileName] if {[catch { downloadOneFile $language $version $platform \ $fileName $downloadFileName $usePgp }] == 0} then { if {$usePgp} then { downloadOneFile $language $version $platform \ [appendArgs $fileName .asc] \ [appendArgs $downloadFileName .asc] $usePgp } set localFileName [file join $persistentDirectory $fileName] set compare [package vcompare \ [lindex [extractVersionsFromFile $downloadFileName] 0] \ [lindex [extractVersionsFromFile $localFileName] 0]] if {[isEagle]} then { file delete -recursive -- $temporaryDirectory } else { file delete -force -- $temporaryDirectory } return [expr {$compare > 0}] } } error "could not check higher version: no supported file names" } # # 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 |
︙ | ︙ |
Modified client/1.0/neutral/pkgd.eagle.asc from [ca7e2d07fe] to [83ddd6ed04].
1 2 3 4 | -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository | | | | | | | | | | | | | | | 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 iQIcBAABCAAGBQJefmh2AAoJEFAslq9JXcLZU+UP/2og4/PHeqflZF+G46gSq7mc Fl+jpy8Dm/H22L2hA+j8h3BlTd8a+KZt5puYtcZjtNbTny0FBwJlLLwDsrtUKzO8 proJZlROO4uXkpQz9HDO8P8nAqb+V3xmfn948kolByR3FGr7kjoH6F6YHmiegmo5 8jBsGKVKpyRTp2inxAnhH0iYDzlLt3mNBqPLjL9oDMPbRuEvf7c1r2nahv0ZetbI r506ozMxd/h17NYtrVajT6MvvMDtymqWvpRWkpqhH/XUksmNNuWr594B3c9uLr0f ubZYd0oo0thqdNtxxFLw1xZy15t4lwt8RQ4jVPR3B5Yc2ENSmRVJq7InjL8rTy9O X9c/dOwtlT3vISXmi9R8S+64876M6DVRG79NNfV6sMbyhestUNxgr3KmbkliHzu1 2obGwnWGtncrS/JWnsu+5P2qIWcXTGOka0RZchGMu3hk/6EqYuTHGr7OVUhhvJzy qOXpiY+kOu4IMA5tpa9bahExE3dyWMAA1z5vx9Hu1TEHCfzICE+iWQ+rskN6orwr N4aiJchl2xLZDOZp9LXJRsBEvzCApwYx1xSfpu9IFqrClSrQ+vZLvttkppv967ZZ BxHe/1/gROYxECELBtydWM/w5kLuJHRY0Q1sV8E7rcNa28uDHpFbwhm9ZkbADDrr yLCorIpOhiR+CTM/QQGI =0ByE -----END PGP SIGNATURE----- |
Modified client/1.0/neutral/pkgd.eagle.harpy from [d344a71fd0] to [33fa834c19].
︙ | ︙ | |||
17 18 19 20 21 22 23 | 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> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>ed107b00-7d62-4824-b6b9-f094571af22f</Id> <HashAlgorithm>SHA512</HashAlgorithm> <EntityType>Script</EntityType> <TimeStamp>2020-03-27T20:56:02.6471192Z</TimeStamp> <Duration>-1.00:00:00</Duration> <Key>0x9559f6017247e3e2</Key> <Signature> bw368Qb9xSunnnDYO5hdkskb2oKMjj09+REOZfmshPV1M6nG3RsCmL7BJm0vuAFPEe05BaJihRFF 6n6WrZkZvVStSmzKLDJbnMNW9Au1jYNrrLD6DSNz85wqhvin3+S8e773JzAu6/GQWFcYWLj9VVvg feKQ1RkZ7DimliedBh5r4avH91Laty/5vLwVPuM2+k4cdBQIRXCPteVmOOGpYYsapHbUyMIInV5Q xiyrQm3rOKkylZHN29uIIqazyzGEWMfjrX0F3Sb+KmRDS2A0Xwb8VIJTJgZOR5zp3vnJYqSqhdpC Nq5hKdD3LZXK2VMmDdIIVixZN/UspIgOoVGQnEjnUL8Q2+dkMPoeGGYZnJxnAgZ2XFKDuCwdm94q c5BayLFM87r9LsUSqWfKqP8YEkXwub88SpT0+T9FwihGXXTjCzH+YyCvZ9BAoo8uGTl4mwptbfz0 DoLGuqF6bX2sBX6fBUlCTV8YmXgH1kI88A8VltW+DdBHQckAjGeBSYijcNw7ZjHpMII8ntdZc0BD USTd+x6v7yLg8YJL3/gU+hRiFY6QTmsQJIq5l0oqGlsVLqBt90iqP5Ig3L3MWBI/sSaVZVUdoCZ+ YLhZSyVFNmj9GM2uUA+L4z7cwvS/BgNa1kqAXoaUTJdYNWgVrpjXF01kscNFylUsB4q7AmpAkrUJ tHQMasKZXnvMfE0TzZ39gaBB0PAG57aNsvCfYFuhB6cIXYUgxDkYHfZddn/FmuP6IjNiFQFrytdK 4mgo7yikuW2ltoMJhKHzv39so1RGXPcQH2lyApl7pwcnDJso16n6R5xAu8367OmweG+LfoP/bnqC etd2NEbpW+RwLFwsSNW0LXeRyrDX+jjg+D18kaKn9iCJn1At2soNOhe4HBsifg036ykWHHDcFrZf nFD24duhFiBZhbqNfkk/TuPm2e5EuPb031LsUaYVM35lEH3coXx0Yf14vO5yvKAGYlwYWKwUxw36 60UKB7Tw3Wjg1n1wKU6VaT+744TQpPrZO6js3j6Dyhh64X4S3yY0B8piIIvrPV3+W153goqjjFnp ZCIt1JXFuSKNcCFaDuRfRFQRf/P2vxB4ILzizYgKjDSRz+NoEGDOI6oW4XE7uKsiQ13XFLOGf2iL KYiy+WhcAFGZBiIj5nuGIXPGCZ1d/BACrKZK3KJDkvUch7wteqXPI5s3h2LkC3jlhZHUcE9BisNw TxeW39rpJnoZJq8TNuI1NIIBMzrGBkWM1wQiwu2gDXUsbwLEs2HVBPXxn2dKwauwy0EoLF7D9FlE 75f6TMDBNYT0Sl3DteA2yahbiCNFRGIcMCC3ku9pKVQ/5Z4m9IWKZBESm/0NSL0pa/NzTGrEQu8K 49Uf0A9o7ugnIEVcginlrnvC0EKwVRboqjaaZ64fHI2iL/gACzisieHMrIekm9cjZHQUEd4TWnYj WMFysYDEx54VE4mz9VwFi9wDXAeaGA34aLmOB7r4xUDdz4gD2BL08JNUVSymLAHU4iENfSxoN8mn LJhuWuK7qUypDB4qu+ifwjcvrxoXAhkXeJRHCYd9Lp84HbyWUAoxlIruatl1mwA9W+g6E8t2d9e/ kgr+6FQGCh1zg3jByENWuS9t8nxbH+T2wttVuZEIX4KND+1pInuGVkaKYnKZNIgSiHJHmUIZ8Dar 4iMMkp82GhqPEwAOe8uVnYdwyjEapAI6/5U3Syxy1i4OIGD/y2Wvy1bVU7QwNnOQ+0GesqRgmnbf RwzN3Uyr86FxZ6qtqsZj9ImmfvmU/fot3o6sXBDByVw4c7CcaoYW4J50CWWxiHNPxbO8K2iow0QK usmuQoBKFYt46FtpPw9fCeHlU/EUpugA9kPZv3Kofxdb/tj47nchjDOFOSlpv+0boJ0EVhpg/5Yt 52n907iONUGI1o2WsBCvpu4m/mO0qwC/o13/FWU5hQEagV4sjHSzXKhzmhGD7fBfSDxZ9AtxwtGs Z11u+iLAWD7hZWx1Ag7vuat6trcgOBIqCjre7oUT4kuiAPt6OkD1Ha9IRiMREaxTv+WvSJYybji8 GJIqC+yoBRDnNsUZPVauRGQ8X1p4RuX4jkZUcjyS5bD6M7NTxwtSXg/bD+S0s6/7uCSLc0A05bWr +g5xeUQluPXImR580dDmUT/wW9j+xz+dXmcjVkvAXHb9yqxDMpWgMHSbDQqyM03MSJYqUZ5mOFPK gLULiY92mOer4PNguxvuoHSlnCflSPOjNU5mNzbrbkMYW2jcrtWwQ+TcchPvO8k4Lxa8QR0XYQ4Y Y0p403uh6ycJk7tbHzSlP20AWjrGX5qSCYcdNn9gFJC6V7ocdyDS2q4EMonrWSefF1xi1j/r6W4P JMwdhTSWWy5L1pVF1fjB2QJWNFgT2XKac7GMe/jNeaCpB3l15CD6lDddji3IR2pqkw4H/qM9FHs8 vBXemT4oFCtTcVow0hsYUFDPZik2i9ZJ4r+V951ajdbVOZhX3xvOSX1jwHCvuerZeCb1oa0BVGG6 elxWxbUCEXuIztSP3oCOAMZYfCD55cY+nSFU0sTRvkGO1VCqBaR9EBgGEAkC27QrRZQfjeiTC0vW XFmS0jlBQyW5e7cPFECbR1g/MYWuziV4bOoWjD+rqronXVwyX7dKWevpy0xsQEEVxUega7My8kZj E2KTDuvxi06qfzxlO1LNFa1I3SD31uWoXNsaNdOUCGSbTiZibq156MB9cPEL0XY3vlvMPgg= </Signature> </Certificate> |
Modified client/1.0/neutral/pkgd.eagle.harpy.asc from [6993fd762b] to [435ff4a320].
1 2 3 4 | -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository | | | | | | | | | | | | | | | 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 iQIcBAABCAAGBQJefmh3AAoJEFAslq9JXcLZQvEP/2DmyHIFHTJQ24GRXISNApvc SwE5Ph/E9rHXsn8FcUZ9nlUt/FBcKDNePCY6g4p1R278sSUEzHv7vG14SfjeGnHr CDUJN/ALCcappRyvoT39bb2pJ1PwPF3iCebnGNk98wU1vneVSwMAqS5RMCrYgm1u qOc/s5auwrSJPmKGzd3+pSeVLaoollhIsEfh+JbEmGZX0/p/0IeC/PY3EdU2W7Vd HE3Tk2t+tS7GiQbkAMF0V3xyc2/11nFiNYz8L20ioEKmYaFO/ScfJZP6ZV2uhwjR s+lkmWQjO3izSr7bfM8Ffg/UutCgspnyc7DGVAQApZ9AV03m1NR6vYE4/4zdhOVm 2IhKJ/yAJYmiuE7vaA1EM2m1eWccQCY2bMTTE7OdYgPRbT8AWIjS3pWCM0BUIYAv TAACji5249/Dz8BNT75Y7G6P7CN7H0l2lDUAQKd9YngEZJX21zfAKIxEhmuHcrCG sVhpfLfGlfXfsaPGBgtPkKsXPdHPLVUGbdEcB/MFsmE5yLzIaaJyhOx4SOQAn91n BApw6NKPsQDi8CeUeL/ydqG6sJP2gO1WtpQot4sB5BCuz43BFGLIxtWATpl7QRsv tc+YPeJLx9Ksb66pjoR1yJ/INodUCK8TEXf3x+KORg01r9Z1foLd6fwc01Jsr/tE 70r34qCHAuJjL7WaRrOy =l79d -----END PGP SIGNATURE----- |
Modified client/1.0/neutral/pkgr.eagle from [8f2d9374a1] to [dd293526a1].
︙ | ︙ | |||
415 416 417 418 419 420 421 | # OpenPGP installation directory was successfully detected and added # to the PATH -OR- detecting and adding it was not necessary because # it already appeared to be available for use. # # <internal> proc probeForOpenPgpInstallation {} { global env | | | | | | > > > | | | | | < < | | | > > > > > | > > > | 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 | # OpenPGP installation directory was successfully detected and added # to the PATH -OR- detecting and adding it was not necessary because # it already appeared to be available for use. # # <internal> proc probeForOpenPgpInstallation {} { global env variable openPgpFileNamesOnly variable openPgpInstalledDirectories if {[catch {openPgpMustBeInstalled}] == 0} then { return true } if {![info exists openPgpFileNamesOnly]} then { return false } if {![info exists openPgpInstalledDirectories]} then { return false } if {[isWindows]} then { if {[info exists env(ProgramFiles(x86))]} then { set programFiles $env(ProgramFiles\(x86\)) } elseif {[info exists env(ProgramFiles)]} then { set programFiles $env(ProgramFiles) } else { return false } } foreach directory $openPgpInstalledDirectories { if {[isWindows]} then { set subDirectory [file join $programFiles $directory] } else { set subDirectory $directory } if {[file isdirectory $subDirectory]} then { foreach fileNameOnly $openPgpFileNamesOnly { set fileName [file join $subDirectory $fileNameOnly] if {[file exists $fileName] && [file isfile $fileName]} then { pkgLog [appendArgs \ "the OpenPGP directory is being initialized to \"" \ $subDirectory "\" based on OpenPGP file name \"" \ $fileNameOnly \"] return [addToPath $subDirectory] } } } } return false } # # NOTE: This procedure attempts to verify that a configured implementation |
︙ | ︙ | |||
483 484 485 486 487 488 489 | Alternatively, it may be possible to install GNU Privacy Guard (GPG) via the package management subsystem included with your operating system. } set found false | | | 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 | Alternatively, it may be possible to install GNU Privacy Guard (GPG) via the package management subsystem included with your operating system. } set found false foreach fileNameOnly $openPgpFileNamesOnly { if {[isEagle]} then { if {[catch { eval exec -success Success [subst $openPgpInstalledCommand] } result] == 0} then { set found true; break } } else { |
︙ | ︙ | |||
509 510 511 512 513 514 515 | # viable OpenPGP file name? # if {[info exists openPgpFileNameOnly]} then { # # NOTE: If the OpenPGP file name that we found before (?) does not # match what we already have, issue a log message. # | | | | > > > > | | 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 | # viable OpenPGP file name? # if {[info exists openPgpFileNameOnly]} then { # # NOTE: If the OpenPGP file name that we found before (?) does not # match what we already have, issue a log message. # if {$fileNameOnly ne $openPgpFileNameOnly} then { pkgLog [appendArgs \ "the OpenPGP file name is being changed from \"" \ $openPgpFileNameOnly "\" to \"" $fileNameOnly \"] set openPgpFileNameOnly $fileNameOnly } } else { # # NOTE: Configure the OpenPGP file name to the one that was just # found. # pkgLog [appendArgs \ "the OpenPGP file name is being initialized to \"" \ $fileNameOnly \"] set openPgpFileNameOnly $fileNameOnly } } else { # # NOTE: If no viable OpenPGP file name was found, raise the error # message. # error $message |
︙ | ︙ | |||
2296 2297 2298 2299 2300 2301 2302 | # proc setupRepositoryOpenPgpVars { force } { # # NOTE: This is the name of the sub-directory containing the OpenPGP # implementation. It is platform-specific. On Windows, this # sub-directory is relative to the "Program Files" directory. # | | | | > | > | | | | | | | | | 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 | # proc setupRepositoryOpenPgpVars { force } { # # NOTE: This is the name of the sub-directory containing the OpenPGP # implementation. It is platform-specific. On Windows, this # sub-directory is relative to the "Program Files" directory. # variable openPgpInstalledDirectories; # DEFAULT: [list ...] if {$force || ![info exists openPgpInstalledDirectories]} then { if {[isWindows]} then { set openPgpInstalledDirectories [list \ [file join gnupg bin] [file join GNU GnuPG]] } else { set openPgpInstalledDirectories [list \ [file join / usr bin]] } } # # NOTE: These are the candidate names of the executable file used to # invoke the OpenPGP implementation, possibly without a file # extension. # variable openPgpFileNamesOnly; # DEFAULT: [list gpg2 gpg] if {$force || ![info exists openPgpFileNamesOnly]} then { if {[isWindows]} then { set openPgpFileNamesOnly [list gpg2.exe gpg.exe] } else { set openPgpFileNamesOnly [list gpg2 gpg] } } # # NOTE: This is the name of the executable file used to invoke the # OpenPGP implementation, possibly without a file extension. # variable openPgpFileNameOnly; # DEFAULT: <unset> # # NOTE: The command to use when attempting to import an OpenPGP key # file. This must be configured according to the implementation # of OpenPGP in use. # variable openPgpImportCommand; # DEFAULT: gpg2 --import if {$force || ![info exists openPgpImportCommand]} then { set openPgpImportCommand \ {{${openPgpFileNameOnly}} --import {${fileName}}} } # # NOTE: The regular expression pattern used when attempting to verify # that OpenPGP successfully imported one or more keys. This must # be configured according to the implementation of OpenPGP in use. # variable openPgpImportPattern; # DEFAULT: ^gpg: Total number processed... if {$force || ![info exists openPgpImportPattern]} then { set openPgpImportPattern {^gpg: Total number processed: [1-9]\d*$} } # # NOTE: The command to use when attempting to verify that OpenPGP is # installed locally. This must be configured according to the # implementation of OpenPGP in use. # variable openPgpInstalledCommand; # DEFAULT: gpg2 --version --homedir {} if {$force || ![info exists openPgpInstalledCommand]} then { set openPgpInstalledCommand {{${fileNameOnly}} --version --homedir {}} } # # NOTE: The regular expression pattern used when attempting to verify # that OpenPGP is installed locally. This must be configured # according to the implementation of OpenPGP in use. # variable openPgpInstalledPattern; # DEFAULT: ^gpg \(GnuPG\) 2\.[0123]\. if {$force || ![info exists openPgpInstalledPattern]} then { set openPgpInstalledPattern {^gpg \(GnuPG\) 2\.[0123]\.} } # # NOTE: The command to use when verifying OpenPGP signatures for the # downloaded package scripts. This must be configured according # to the implementation of OpenPGP in use. # variable openPgpVerifyCommand; # DEFAULT: gpg2 --verify {${fileName}} if {$force || ![info exists openPgpVerifyCommand]} then { set openPgpVerifyCommand \ {{${openPgpFileNameOnly}} --verify {${fileName}}} } # # NOTE: The command to use when creating OpenPGP signatures for the # downloaded package scripts. This must be configured according # to the implementation of OpenPGP in use. # variable openPgpSignCommand; # DEFAULT: gpg2 --detach-sign ... if {$force || ![info exists openPgpSignCommand]} then { set openPgpSignCommand "" append openPgpSignCommand \ {{${openPgpFileNameOnly}} --detach-sign --armor} append openPgpSignCommand \ { --passphrase-file [formatExecArgument [getOpenPgpPassphraseFile]]} |
︙ | ︙ |
Modified client/1.0/neutral/pkgr.eagle.asc from [00f9341292] to [22dcdd3585].
1 2 3 4 | -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository | | | | | | | | | | | | | | | 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 iQIcBAABCAAGBQJefmhwAAoJEFAslq9JXcLZnzkQAMSqU2nlTobNSziYN+EnEazL X7cGWSqXgLNqAaWr5RNTRcY+22mu+mr50B2JpJBfuGPxSvSp4eq4GUdQgOLO5fhW Tw3pnhS0Y9/wjFkn0IFmA5QI1FpLsgZjzDiQNHB+BZZ4ybFFTq94gw5tN6ZS9utn 0Wt7aT1KiHM7bMMymIkeGGmU4VOLtlyCUs/GUHo+iwMdPZPA6DMHV8vXdQNIPr2D nzUIGsMpQs2k7wIHzCI3iJvVJQA5VyfnFpztzhsR3MxiJxeYjhMdHL1wvfZ2NpOy csSw3Mb9pRj/otuIJa6bNookHhruVSXr/XUfTVN4wdUup5FVjA5kRzL/yfx99WjQ baUNyYLjGHPZLXtXsPBrjPF5JI/ipVv4UYAqTL/sjLRxLG+JNRFWg9qDusJB+Trm 9BtMHzhkvJBuPMUsPXvPMuqbVGYJN6os5BRU+ltX0vLUxslf1EI/pAe7F8rFIiir 2oFRbzzq+ypd4PwrpGmF3LhAa2RNz/VnR1j4ip90nYSpFFcl6JjnxubB56moPxPs q907ex0+xBLpULC/vZ6TPH6O1gVJ4dTLFH9tJpqH5qyWbbIeCyfN5Ynhq69Y+qdB 636kXlUOEgg4I3ZkfDubpKf/DZ8yYMUgyaluRIOiGkkIQ2VuRLKd4zelLtKxT3Mv KazKvCNfOcxc/9YtD2Z2 =FjC5 -----END PGP SIGNATURE----- |
Modified client/1.0/neutral/pkgr.eagle.harpy from [78dfc1d1f9] to [08cc84f00d].
︙ | ︙ | |||
17 18 19 20 21 22 23 | 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> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>9bfbeedf-0f5e-44b8-b371-7c5b484e7747</Id> <HashAlgorithm>SHA512</HashAlgorithm> <EntityType>Script</EntityType> <TimeStamp>2020-03-27T20:55:40.9358622Z</TimeStamp> <Duration>-1.00:00:00</Duration> <Key>0x9559f6017247e3e2</Key> <Signature> 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 </Signature> </Certificate> |
Modified client/1.0/neutral/pkgr.eagle.harpy.asc from [edb05628a8] to [d272114ef8].
1 2 3 4 | -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Eagle Package Repository | | | | | | | | | | | | | | | 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 iQIcBAABCAAGBQJefmhyAAoJEFAslq9JXcLZveUP/Rlt1T0DafCi0c1cBSaRSg+a aOB61P5V7ZJieuL7RE1utJUE13IRR3vCfmfjVJjD1WETRmPafBCU/XD/eIvI/Tqv KleBiCMIFrA5g21TxF1YxrFmcS3BKixzduSCyJWZI0dtG5QmMN0PcWzNMtu9nnFd TpNazqt6UcIiw4vIq8gx0NXo0c/2bPZa9Hxs3LDJO/lgHJEOHvaJY7JfE0vhFcfT 6UlqJ0p1QfdSda95cc55Takg0dAQaAKNtWvXXIInMMf/O/miexh4uS1KNGx+f61U ApF6fCQfn0gHTfGHv7zrccvwy8WCinHuwqj6IIms0vXk13SXBc4ZcKUVGNDLWxhZ qz9rAnTqtZujphUO0z0oDleRj8k+IbJXj4fCdmkDNEaGVSyZu7nps8p9SWtwrFs9 d50THrSeAk5nM+VWaw4fsZ7q8kbFb3r0ANx9SfnGmFmhZMZWUdln+BFn5y8CrzEg AJm4ShGtznj2ntJLHkBaesDswsTmDASb9QrkDIlZKm9pnjFleTMXW/TcQHnLBlYH o+aO+XRBAGqSDaAoTrSsXKlm4XW04IMPLgJOaHO+EbhTBRbb2Rh/AEmd4oZb21WL Ag+qqcFwbNmSfUooO6mtZUxX2BRKEg6BSWpB/nT35yG8c/KwrURW8KHBqLUTpNUK +ZzhBCUKDu05xmE1heJU =VxHM -----END PGP SIGNATURE----- |