gnucash-on-flatpak master: Implement Finance::Quote support

Geert Janssens gjanssens at code.gnucash.org
Sun Feb 16 08:04:15 EST 2020


Updated	 via  https://github.com/Gnucash/gnucash-on-flatpak/commit/d21b04cd (commit)
	from  https://github.com/Gnucash/gnucash-on-flatpak/commit/dfdc5589 (commit)



commit d21b04cd56177f962571bc62b88a3050e18137c8
Author: Geert Janssens <geert at kobaltwit.be>
Date:   Sun Feb 16 14:04:09 2020 +0100

    Implement Finance::Quote support

diff --git a/README.md b/README.md
index 81f85cc..88d9bc4 100644
--- a/README.md
+++ b/README.md
@@ -225,9 +225,53 @@ similar housekeeping for all the flatpakref files, buildlogs and manifests.
 * The script will only build the packages if there are changes in the source
   repositories since the last build.
 
+## Finance::Quote ##
+
+Flatpaks don't ship perl, nor cpan. So enabling Finance::Quote support requires
+adding build rules for all of these in the flatpak manifest. This is a short
+summary of how this was done.
+
+1. Use https://github.com/flathub/io.github.Hexchat.Plugin.Perl/blob/master/io.github.Hexchat.Plugin.Perl.json
+as an example project to get perl built in flatpak. Note this cleans way
+too much of the perl installation (including the perl executable which we still need).
+
+2. Use https://github.com/flatpak/flatpak-builder-tools/tree/master/cpan to generate
+a manifest snippet with build for all the cpan modules required for Finance::Quote
+
+3. Add perl and finance-quote modules to our manifest. The snippet generated in
+the previous step will be inluded as source list of the finance-quote module.
+Keeping this separate allows us to easily update cpan dependencies in the future
+without interfering with other parts of the manifest.
+
+Step 2 was not without issues and it took me a while to successfully create
+the snippet. In short: the current flatpak-builder-tools cpan generator is
+fairly fragile.
+- It will fail to include certain modules (those that don't write
+an insallation line to perllocal.pod during installation). This happens for example
+with the `HTML::Tree` module
+- the entry found in perllocal.pod can't be mapped back to the module's distribution
+name in some cases, like with the `Date::Parse` module. It's distribution name is
+TimeDate, and the current script errors out on this.
+
+Long story short, my github fork https://github.com/gjanssens/flatpak-builder-tools
+has patches that allowed me to proceed. I have offered them upstream for inclusion.
+
+From there I:
+
+- installed the required perl modules on my (Fedora) system using
+`sudo dnf install 'perl(App::cpanminus)' 'perl(Getopt::Long::Descriptive)' 'perl(JSON::MaybeXS)' 'perl(LWP::UserAgent)' 'perl(MetaCPAN::Client)' 'perl(Pod::Simple::SimpleTree)'`
+as mentioned on the flatpak-builder-tools page
+- ran `./flatpak-cpan-generator.pl Date::Manip Finance::Quote`
+- copied the resulting `generated-sources.json` to `modules/finance-quote-sources.json`
+
+Note I have found the script to be not very version control friendly:
+`generated-sources.json` will change a lot between runs. It will have the exact same
+sources and dependencies, but they are shuffled around. Experiments indicate this is
+already due to the way cpanminus handles dependency resolution. The order in which
+same-level dependencies are processed is not stable. A minor annoyance I can live with
+for now.
+
 ## TODO ##
-- add finance::quote support
-- properly handle release builds (should be run from release tarball)
 - try to build gnucash-docs as an extension instead of directly in the main flatpak
 
 # Further Readings #
diff --git a/modules/finance-quote-sources.json b/modules/finance-quote-sources.json
new file mode 100644
index 0000000..0e8073e
--- /dev/null
+++ b/modules/finance-quote-sources.json
@@ -0,0 +1,497 @@
+[
+   {
+      "url": "https://cpan.metacpan.org/authors/id/S/SB/SBECK/Date-Manip-6.79.tar.gz",
+      "sha256": "71a8c42ce4edbd46a3ca2a17a7218ceed958cd7ad0dfeb79389f23d0f466943a",
+      "dest": "perl-libs/Date-Manip",
+      "type": "archive"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/C/CJ/CJM/IO-HTML-1.001.tar.gz",
+      "type": "archive",
+      "dest": "perl-libs/IO-HTML",
+      "sha256": "ea78d2d743794adc028bc9589538eb867174b4e165d7d8b5f63486e6b828e7e0"
+   },
+   {
+      "type": "archive",
+      "dest": "perl-libs/URI",
+      "sha256": "b2c98e1d50d6f572483ee538a6f4ccc8d9185f91f0073fd8af7390898254413e",
+      "url": "https://cpan.metacpan.org/authors/id/O/OA/OALDERS/URI-1.76.tar.gz"
+   },
+   {
+      "dest": "perl-libs/LWP-MediaTypes",
+      "type": "archive",
+      "sha256": "8f1bca12dab16a1c2a7c03a49c5e58cce41a6fec9519f0aadfba8dad997919d9",
+      "url": "https://cpan.metacpan.org/authors/id/O/OA/OALDERS/LWP-MediaTypes-6.04.tar.gz"
+   },
+   {
+      "sha256": "5c720fedb245122d073ea9c030aca24b06a615c71d40c46f832a8a1809354d81",
+      "dest": "perl-libs/TimeDate",
+      "type": "archive",
+      "url": "https://cpan.metacpan.org/authors/id/A/AT/ATOOMIC/TimeDate-2.31.tar.gz"
+   },
+   {
+      "sha256": "365d6294dfbd37ebc51def8b65b81eb79b3934ecbc95a2ec2d4d827efe6a922b",
+      "type": "archive",
+      "dest": "perl-libs/HTTP-Date",
+      "url": "https://cpan.metacpan.org/authors/id/O/OA/OALDERS/HTTP-Date-6.05.tar.gz"
+   },
+   {
+      "sha256": "176fa02771f542a4efb1dbc2a4c928e8f4391bf4078473bd6040d8f11adb0ec1",
+      "type": "archive",
+      "dest": "perl-libs/Encode-Locale",
+      "url": "https://cpan.metacpan.org/authors/id/G/GA/GAAS/Encode-Locale-1.05.tar.gz"
+   },
+   {
+      "sha256": "d060d170d388b694c58c14f4d13ed908a2807f0e581146cef45726641d809112",
+      "dest": "perl-libs/HTTP-Message",
+      "type": "archive",
+      "url": "https://cpan.metacpan.org/authors/id/O/OA/OALDERS/HTTP-Message-6.18.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/L/LE/LEONT/Module-Build-0.4231.tar.gz",
+      "type": "archive",
+      "dest": "perl-libs/Module-Build",
+      "sha256": "7e0f4c692c1740c1ac84ea14d7ea3d8bc798b2fb26c09877229e04f430b2b717"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/E/ET/ETHER/Try-Tiny-0.30.tar.gz",
+      "dest": "perl-libs/Try-Tiny",
+      "type": "archive",
+      "sha256": "da5bd0d5c903519bbf10bb9ba0cb7bcac0563882bcfe4503aee3fb143eddef6b"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Test-Fatal-0.014.tar.gz",
+      "sha256": "bcdcef5c7b2790a187ebca810b0a08221a63256062cfab3c3b98685d91d1cbb0",
+      "dest": "perl-libs/Test-Fatal",
+      "type": "archive"
+   },
+   {
+      "sha256": "adb17dac9e36cd011f5243881c9739417fd102fce760f8de4e9be4c7131108e2",
+      "type": "archive",
+      "dest": "perl-libs/HTML-Tagset",
+      "url": "https://cpan.metacpan.org/authors/id/P/PE/PETDANCE/HTML-Tagset-3.20.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/G/GA/GAAS/HTML-Parser-3.72.tar.gz",
+      "type": "archive",
+      "dest": "perl-libs/HTML-Parser",
+      "sha256": "ec28c7e1d9e67c45eca197077f7cdc41ead1bb4c538c7f02a3296a4bb92f608b"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/K/KE/KENTNL/HTML-Tree-5.07.tar.gz",
+      "dest": "perl-libs/HTML-Tree",
+      "type": "archive",
+      "sha256": "f0374db84731c204b86c1d5b90975fef0d30a86bd9def919343e554e31a9dbbf"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/B/BK/BKB/JSON-Parse-0.55.tar.gz",
+      "sha256": "dc9856dbc355114bcb0dc036bb632976b19b88d3a7ad59726f1fa917e7f5d256",
+      "dest": "perl-libs/JSON-Parse",
+      "type": "archive"
+   },
+   {
+      "type": "archive",
+      "dest": "perl-libs/Mozilla-CA",
+      "sha256": "f2cc9fbe119f756313f321e0d9f1fac0859f8f154ac9d75b1a264c1afdf4e406",
+      "url": "https://cpan.metacpan.org/authors/id/A/AB/ABH/Mozilla-CA-20180117.tar.gz"
+   },
+   {
+      "sha256": "f3ef1af108f27fef15ebec66479f251ce08aa49bd00b0462c9c80c86b4b6b32b",
+      "type": "archive",
+      "dest": "perl-libs/HTML-Element-Extended",
+      "url": "https://cpan.metacpan.org/authors/id/M/MS/MSISK/HTML-Element-Extended-1.18.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/M/MS/MSISK/HTML-TableExtract-2.15.tar.gz",
+      "type": "archive",
+      "dest": "perl-libs/HTML-TableExtract",
+      "sha256": "86c59c9d58da3ca174da5e62f5a0fb02f4da02b1b1e01df9e5d14bb65e4c3ecf"
+   },
+   {
+      "sha256": "2000da483c8471a0b61e06959e92a6fca7b9e40586d5c828de977d3d2081cfdd",
+      "dest": "perl-libs/Net-SSLeay",
+      "type": "archive",
+      "url": "https://cpan.metacpan.org/authors/id/C/CH/CHRISN/Net-SSLeay-1.88.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/S/SU/SULLR/IO-Socket-SSL-2.067.tar.gz",
+      "type": "archive",
+      "dest": "perl-libs/IO-Socket-SSL",
+      "sha256": "ef8842806d047cf56e2af64add4ed30b24547bcbb50e8df33cee0c54609af1c1"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/G/GA/GAAS/File-Listing-6.04.tar.gz",
+      "sha256": "1e0050fcd6789a2179ec0db282bf1e90fb92be35d1171588bd9c47d52d959cf5",
+      "dest": "perl-libs/File-Listing",
+      "type": "archive"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/O/OA/OALDERS/Net-HTTP-6.19.tar.gz",
+      "type": "archive",
+      "dest": "perl-libs/Net-HTTP",
+      "sha256": "52b76ec13959522cae64d965f15da3d99dcb445eddd85d2ce4e4f4df385b2fc4"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/G/GA/GAAS/WWW-RobotRules-6.02.tar.gz",
+      "type": "archive",
+      "dest": "perl-libs/WWW-RobotRules",
+      "sha256": "46b502e7a288d559429891eeb5d979461dd3ecc6a5c491ead85d165b6e03a51e"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/L/LE/LEONT/ExtUtils-Helpers-0.026.tar.gz",
+      "dest": "perl-libs/ExtUtils-Helpers",
+      "type": "archive",
+      "sha256": "de901b6790a4557cf4ec908149e035783b125bf115eb9640feb1bc1c24c33416"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/L/LE/LEONT/ExtUtils-Config-0.008.tar.gz",
+      "sha256": "ae5104f634650dce8a79b7ed13fb59d67a39c213a6776cfdaa3ee749e62f1a8c",
+      "dest": "perl-libs/ExtUtils-Config",
+      "type": "archive"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/L/LE/LEONT/ExtUtils-InstallPaths-0.012.tar.gz",
+      "type": "archive",
+      "dest": "perl-libs/ExtUtils-InstallPaths",
+      "sha256": "84735e3037bab1fdffa3c2508567ad412a785c91599db3c12593a50a1dd434ed"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/L/LE/LEONT/Module-Build-Tiny-0.039.tar.gz",
+      "dest": "perl-libs/Module-Build-Tiny",
+      "type": "archive",
+      "sha256": "7d580ff6ace0cbe555bf36b86dc8ea232581530cbeaaea09bccb57b55797f11c"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/O/OA/OALDERS/HTTP-Daemon-6.06.tar.gz",
+      "sha256": "fc03a161b54553f766457a4267e7066767f54ad01cacfe9a91d7caa2a0319bad",
+      "type": "archive",
+      "dest": "perl-libs/HTTP-Daemon"
+   },
+   {
+      "type": "archive",
+      "dest": "perl-libs/HTTP-Negotiate",
+      "sha256": "1c729c1ea63100e878405cda7d66f9adfd3ed4f1d6cacaca0ee9152df728e016",
+      "url": "https://cpan.metacpan.org/authors/id/G/GA/GAAS/HTTP-Negotiate-6.01.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/O/OA/OALDERS/HTTP-Cookies-6.08.tar.gz",
+      "dest": "perl-libs/HTTP-Cookies",
+      "type": "archive",
+      "sha256": "49ebb73576eb41063c04bc079477df094496deec805ae033f3be338c23c3af59"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/O/OA/OALDERS/libwww-perl-6.43.tar.gz",
+      "type": "archive",
+      "dest": "perl-libs/libwww-perl",
+      "sha256": "e9849d7ee6fd0e89cc999e63d7612c951afd6aeea6bc721b767870d9df4ac40d"
+   },
+   {
+      "dest": "perl-libs/LWP-Protocol-https",
+      "type": "archive",
+      "sha256": "522cc946cf84a1776304a5737a54b8822ec9e79b264d0ba0722a70473dbfb9e7",
+      "url": "https://cpan.metacpan.org/authors/id/O/OA/OALDERS/LWP-Protocol-https-6.07.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/L/LE/LEEJO/CGI-4.46.tar.gz",
+      "sha256": "788998ddc33ca382e5d7ce72c6c0ea1d8366c93067371fe2f14239ddea2e4298",
+      "dest": "perl-libs/CGI",
+      "type": "archive"
+   },
+   {
+      "type": "archive",
+      "dest": "perl-libs/Module-Runtime",
+      "sha256": "68302ec646833547d410be28e09676db75006f4aa58a11f3bdb44ffe99f0f024",
+      "url": "https://cpan.metacpan.org/authors/id/Z/ZE/ZEFRAM/Module-Runtime-0.016.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/D/DO/DOY/Dist-CheckConflicts-0.11.tar.gz",
+      "dest": "perl-libs/Dist-CheckConflicts",
+      "type": "archive",
+      "sha256": "ea844b9686c94d666d9d444321d764490b2cde2f985c4165b4c2c77665caedc4"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/H/HA/HAARG/Role-Tiny-2.001004.tar.gz",
+      "sha256": "92ba5712850a74102c93c942eb6e7f62f7a4f8f483734ed289d08b324c281687",
+      "dest": "perl-libs/Role-Tiny",
+      "type": "archive"
+   },
+   {
+      "sha256": "8a2c3b6ccc19328d5579d02a7d91285e2afd85d801f49d423a8eb16f323da4f8",
+      "dest": "perl-libs/MRO-Compat",
+      "type": "archive",
+      "url": "https://cpan.metacpan.org/authors/id/H/HA/HAARG/MRO-Compat-0.13.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/D/DO/DOY/Eval-Closure-0.14.tar.gz",
+      "sha256": "ea0944f2f5ec98d895bef6d503e6e4a376fea6383a6bc64c7670d46ff2218cad",
+      "type": "archive",
+      "dest": "perl-libs/Eval-Closure"
+   },
+   {
+      "sha256": "cd3c03ed547d3d42c61fa5814c98296139392e7971c092e09a431f2c9f5d6855",
+      "type": "archive",
+      "dest": "perl-libs/Devel-StackTrace",
+      "url": "https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Devel-StackTrace-2.04.tar.gz"
+   },
+   {
+      "sha256": "260e252f7367228c9b4e43ef50c0becb04c4781de660577b3086cc106c0028c0",
+      "type": "archive",
+      "dest": "perl-libs/XString",
+      "url": "https://cpan.metacpan.org/authors/id/A/AT/ATOOMIC/XString-0.002.tar.gz"
+   },
+   {
+      "type": "archive",
+      "dest": "perl-libs/Sub-Quote",
+      "sha256": "6e4e2af42388fa6d2609e0e82417de7cc6be47223f576592c656c73c7524d89d",
+      "url": "https://cpan.metacpan.org/authors/id/H/HA/HAARG/Sub-Quote-2.006006.tar.gz"
+   },
+   {
+      "type": "archive",
+      "dest": "perl-libs/Specio",
+      "sha256": "e4b988ce6383b076bf23e942313d1b8930779eb9954d87db994fe2baffd461f6",
+      "url": "https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Specio-0.45.tar.gz"
+   },
+   {
+      "dest": "perl-libs/Class-Data-Inheritable",
+      "type": "archive",
+      "sha256": "9967feceea15227e442ec818723163eb6d73b8947e31f16ab806f6e2391af14a",
+      "url": "https://cpan.metacpan.org/authors/id/T/TM/TMTM/Class-Data-Inheritable-0.08.tar.gz"
+   },
+   {
+      "sha256": "33f3fbf8b138d3b04ea4ec0ba83fb0df6ba898806bcf4ef393d4cafc1a23ee0d",
+      "type": "archive",
+      "dest": "perl-libs/Exception-Class",
+      "url": "https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Exception-Class-1.44.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Params-ValidationCompiler-0.30.tar.gz",
+      "sha256": "dc5bee23383be42765073db284bed9fbd819d4705ad649c20b644452090d16cb",
+      "type": "archive",
+      "dest": "perl-libs/Params-ValidationCompiler"
+   },
+   {
+      "sha256": "45befdf0d95cbefe7c25a1daf293d85f780d6d2576146546e6828aad26e580f9",
+      "dest": "perl-libs/File-ShareDir-Install",
+      "type": "archive",
+      "url": "https://cpan.metacpan.org/authors/id/E/ET/ETHER/File-ShareDir-Install-0.13.tar.gz"
+   },
+   {
+      "sha256": "c15f1a12f0c2130c9efff3c2e1afe5887b08ccd033bd132186d1e7d5087fd66d",
+      "type": "archive",
+      "dest": "perl-libs/Module-Implementation",
+      "url": "https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Module-Implementation-0.09.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/E/ET/ETHER/Package-Stash-XS-0.29.tar.gz",
+      "sha256": "d3676ba94641e03d6a30e951f09266c4c3ca3f5b58aa7b314a67f28e419878aa",
+      "dest": "perl-libs/Package-Stash-XS",
+      "type": "archive"
+   },
+   {
+      "sha256": "c58ee8844df2dda38e3bf66fdf443439aaefaef1a33940edf2055f0afd223a7f",
+      "dest": "perl-libs/Package-Stash",
+      "type": "archive",
+      "url": "https://cpan.metacpan.org/authors/id/E/ET/ETHER/Package-Stash-0.38.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/V/VP/VPIT/Variable-Magic-0.62.tar.gz",
+      "sha256": "3f9a18517e33f006a9c2fc4f43f01b54abfe6ff2eae7322424f31069296b615c",
+      "dest": "perl-libs/Variable-Magic",
+      "type": "archive"
+   },
+   {
+      "sha256": "d535b7954d64da1ac1305b1fadf98202769e3599376854b2ced90c382beac056",
+      "type": "archive",
+      "dest": "perl-libs/Sub-Exporter-Progressive",
+      "url": "https://cpan.metacpan.org/authors/id/F/FR/FREW/Sub-Exporter-Progressive-0.001013.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/E/ET/ETHER/B-Hooks-EndOfScope-0.24.tar.gz",
+      "sha256": "03aa3dfe5d0aa6471a96f43fe8318179d19794d4a640708f0288f9216ec7acc6",
+      "dest": "perl-libs/B-Hooks-EndOfScope",
+      "type": "archive"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/R/RI/RIBASUSHI/namespace-clean-0.27.tar.gz",
+      "sha256": "8a10a83c3e183dc78f9e7b7aa4d09b47c11fb4e7d3a33b9a12912fd22e31af9d",
+      "dest": "perl-libs/namespace-clean",
+      "type": "archive"
+   },
+   {
+      "sha256": "068d272086514dd1e842b6a40b1bedbafee63900e5b08890ef6700039defad6f",
+      "dest": "perl-libs/Sub-Identify",
+      "type": "archive",
+      "url": "https://cpan.metacpan.org/authors/id/R/RG/RGARCIA/Sub-Identify-0.14.tar.gz"
+   },
+   {
+      "type": "archive",
+      "dest": "perl-libs/namespace-autoclean",
+      "sha256": "45ebd8e64a54a86f88d8e01ae55212967c8aa8fed57e814085def7608ac65804",
+      "url": "https://cpan.metacpan.org/authors/id/E/ET/ETHER/namespace-autoclean-0.29.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/Class-Inspector-1.36.tar.gz",
+      "sha256": "cc295d23a472687c24489d58226ead23b9fdc2588e522f0b5f0747741700694e",
+      "dest": "perl-libs/Class-Inspector",
+      "type": "archive"
+   },
+   {
+      "dest": "perl-libs/File-ShareDir",
+      "type": "archive",
+      "sha256": "59d90bfdf98c4656ff4173e62954ea8cf0de66565e35d108ecd7050596cb8328",
+      "url": "https://cpan.metacpan.org/authors/id/R/RE/REHSACK/File-ShareDir-1.116.tar.gz"
+   },
+   {
+      "sha256": "aa79746bd488b32aa4dbccccd05f1e5505642be013d8064a5d6f8a76a3c45d0b",
+      "dest": "perl-libs/DateTime-Locale",
+      "type": "archive",
+      "url": "https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/DateTime-Locale-1.25.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/S/SH/SHAY/Class-Singleton-1.5.tar.gz",
+      "sha256": "38220d04f02e3a803193c2575a1644cce0b95ad4b95c19eb932b94e2647ef678",
+      "dest": "perl-libs/Class-Singleton",
+      "type": "archive"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/DateTime-TimeZone-2.38.tar.gz",
+      "type": "archive",
+      "dest": "perl-libs/DateTime-TimeZone",
+      "sha256": "0e5c99ef22471f4d262ac590ce5ce8177094d7a92f380d8eea6219f5a12dc0cd"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/DateTime-1.51.tar.gz",
+      "sha256": "de22da0de57a43a976322636d3a7474de4b1d6f37e044337123086cf94c16ec5",
+      "type": "archive",
+      "dest": "perl-libs/DateTime"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/M/MS/MSCHOUT/Text-Template-1.58.tar.gz",
+      "sha256": "0c465757782c4bfb9b17335307a8286771fd36ea04d259bc454ac63355f2a287",
+      "type": "archive",
+      "dest": "perl-libs/Text-Template"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/I/IS/ISHIGAKI/JSON-4.02.tar.gz",
+      "type": "archive",
+      "dest": "perl-libs/JSON",
+      "sha256": "444a88755a89ffa2a5424ab4ed1d11dca61808ebef57e81243424619a9e8627c"
+   },
+   {
+      "type": "archive",
+      "dest": "perl-libs/DateTime-Format-Strptime",
+      "sha256": "593c26466ed7a3d2cefe9215f1619666c5116bd3a551e0aa74b64a6353fcb50d",
+      "url": "https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/DateTime-Format-Strptime-1.76.tar.gz"
+   },
+   {
+      "url": "https://cpan.metacpan.org/authors/id/M/MI/MIKO/Test-Toolbox-0.4.tar.gz",
+      "type": "archive",
+      "dest": "perl-libs/Test-Toolbox",
+      "sha256": "4020b5c7f3a15ac9b187d05dfd9816b8030ec0d4a47ff8373f7633bb614ebdc3"
+   },
+   {
+      "dest": "perl-libs/Number-Misc",
+      "type": "archive",
+      "sha256": "77b9b68c600a069cf16f4d8126ecb32151e6bcd34b0edb17b78adee689dc91d8",
+      "url": "https://cpan.metacpan.org/authors/id/M/MI/MIKO/Number-Misc-1.2.tar.gz"
+   },
+   {
+      "dest": "perl-libs/String-Util",
+      "type": "archive",
+      "sha256": "f49a94f37c146c55211e3f87f3271b74ae4eaee416a519144e923dc0b433fa2d",
+      "url": "https://cpan.metacpan.org/authors/id/M/MI/MIKO/String-Util-1.26.tar.gz"
+   },
+   {
+      "type": "archive",
+      "dest": "perl-libs/Finance-Quote",
+      "sha256": "95dbc4443ba656320b363c56625d04f379c943e202f60f40a2a35152b54bbf53",
+      "url": "https://cpan.metacpan.org/authors/id/E/EC/ECOCODE/Finance-Quote-1.49.tar.gz"
+   },
+   {
+      "dest-filename": "perl-libs/install.sh",
+      "commands": [
+         "set -e",
+         "function make_install {",
+         "    mod_dir=$1",
+         "    cd $mod_dir",
+         "    if [ -f 'Makefile.PL' ]; then",
+         "        perl Makefile.PL && make install",
+         "    elif [ -f 'Build.PL' ]; then",
+         "        perl Build.PL && ./Build && ./Build install",
+         "    else",
+         "        echo 'No Makefile.PL or Build.PL found. Do not know how to install this module'",
+         "        exit 1",
+         "    fi",
+         "}",
+         "(make_install perl-libs/Date-Manip)",
+         "(make_install perl-libs/IO-HTML)",
+         "(make_install perl-libs/URI)",
+         "(make_install perl-libs/LWP-MediaTypes)",
+         "(make_install perl-libs/TimeDate)",
+         "(make_install perl-libs/HTTP-Date)",
+         "(make_install perl-libs/Encode-Locale)",
+         "(make_install perl-libs/HTTP-Message)",
+         "(make_install perl-libs/Module-Build)",
+         "(make_install perl-libs/Try-Tiny)",
+         "(make_install perl-libs/Test-Fatal)",
+         "(make_install perl-libs/HTML-Tagset)",
+         "(make_install perl-libs/HTML-Parser)",
+         "(make_install perl-libs/HTML-Tree)",
+         "(make_install perl-libs/JSON-Parse)",
+         "(make_install perl-libs/Mozilla-CA)",
+         "(make_install perl-libs/HTML-Element-Extended)",
+         "(make_install perl-libs/HTML-TableExtract)",
+         "(make_install perl-libs/Net-SSLeay)",
+         "(make_install perl-libs/IO-Socket-SSL)",
+         "(make_install perl-libs/File-Listing)",
+         "(make_install perl-libs/Net-HTTP)",
+         "(make_install perl-libs/WWW-RobotRules)",
+         "(make_install perl-libs/ExtUtils-Helpers)",
+         "(make_install perl-libs/ExtUtils-Config)",
+         "(make_install perl-libs/ExtUtils-InstallPaths)",
+         "(make_install perl-libs/Module-Build-Tiny)",
+         "(make_install perl-libs/HTTP-Daemon)",
+         "(make_install perl-libs/HTTP-Negotiate)",
+         "(make_install perl-libs/HTTP-Cookies)",
+         "(make_install perl-libs/libwww-perl)",
+         "(make_install perl-libs/LWP-Protocol-https)",
+         "(make_install perl-libs/CGI)",
+         "(make_install perl-libs/Module-Runtime)",
+         "(make_install perl-libs/Dist-CheckConflicts)",
+         "(make_install perl-libs/Role-Tiny)",
+         "(make_install perl-libs/MRO-Compat)",
+         "(make_install perl-libs/Eval-Closure)",
+         "(make_install perl-libs/Devel-StackTrace)",
+         "(make_install perl-libs/XString)",
+         "(make_install perl-libs/Sub-Quote)",
+         "(make_install perl-libs/Specio)",
+         "(make_install perl-libs/Class-Data-Inheritable)",
+         "(make_install perl-libs/Exception-Class)",
+         "(make_install perl-libs/Params-ValidationCompiler)",
+         "(make_install perl-libs/File-ShareDir-Install)",
+         "(make_install perl-libs/Module-Implementation)",
+         "(make_install perl-libs/Package-Stash-XS)",
+         "(make_install perl-libs/Package-Stash)",
+         "(make_install perl-libs/Variable-Magic)",
+         "(make_install perl-libs/Sub-Exporter-Progressive)",
+         "(make_install perl-libs/B-Hooks-EndOfScope)",
+         "(make_install perl-libs/namespace-clean)",
+         "(make_install perl-libs/Sub-Identify)",
+         "(make_install perl-libs/namespace-autoclean)",
+         "(make_install perl-libs/Class-Inspector)",
+         "(make_install perl-libs/File-ShareDir)",
+         "(make_install perl-libs/DateTime-Locale)",
+         "(make_install perl-libs/Class-Singleton)",
+         "(make_install perl-libs/DateTime-TimeZone)",
+         "(make_install perl-libs/DateTime)",
+         "(make_install perl-libs/Text-Template)",
+         "(make_install perl-libs/JSON)",
+         "(make_install perl-libs/DateTime-Format-Strptime)",
+         "(make_install perl-libs/Test-Toolbox)",
+         "(make_install perl-libs/Number-Misc)",
+         "(make_install perl-libs/String-Util)",
+         "(make_install perl-libs/Finance-Quote)"
+      ],
+      "type": "script"
+   }
+]
diff --git a/modules/perl.json b/modules/perl.json
new file mode 100644
index 0000000..e3b1214
--- /dev/null
+++ b/modules/perl.json
@@ -0,0 +1,47 @@
+{
+    "name": "perl-with-finance-quote",
+    "modules": [
+        {
+            "name": "perl",
+            "no-autogen": true,
+            "config-opts": [
+                "-des",
+                "-Duseshrplib"
+            ],
+            "build-options": {
+                "cflags": "-fPIC",
+                "ldflags": "-fpic"
+            },
+            "sources": [
+                {
+                    "type": "archive",
+                    "url": "https://www.cpan.org/src/5.0/perl-5.28.0.tar.gz",
+                    "sha256": "7e929f64d4cb0e9d1159d4a59fc89394e27fa1f7004d0836ca0d514685406ea8"
+                },
+                {
+                    "type": "script",
+                    "dest-filename": "configure",
+                    "commands": [
+                        "exec ./configure.gnu $@"
+                    ]
+                }
+            ],
+            "post-install": [
+                "chmod -R u+w /app/lib/perl5"
+            ]
+        },
+        {
+            "name": "finance-quote",
+            "buildsystem": "simple",
+            "build-commands": [
+                "perl-libs/install.sh"
+            ],
+            "sources": [
+                "./finance-quote-sources.json"
+            ],
+            "post-install": [
+                "chmod -Rf u+w /app/lib/perl5/site_perl"
+            ]
+        }
+    ]
+}
diff --git a/org.gnucash.GnuCash.json b/org.gnucash.GnuCash.json
index b237958..94f3219 100644
--- a/org.gnucash.GnuCash.json
+++ b/org.gnucash.GnuCash.json
@@ -32,6 +32,7 @@
     "modules/aqbanking.json",
     "modules/boost.json",
     "modules/googletest.json",
+    "modules/perl.json",
     "./gnucash.json"
   ]
 }



Summary of changes:
 README.md                          |  48 +++-
 modules/finance-quote-sources.json | 497 +++++++++++++++++++++++++++++++++++++
 modules/perl.json                  |  47 ++++
 org.gnucash.GnuCash.json           |   1 +
 4 files changed, 591 insertions(+), 2 deletions(-)
 create mode 100644 modules/finance-quote-sources.json
 create mode 100644 modules/perl.json



More information about the gnucash-changes mailing list