# # ChangeLog for main/trunk/greenstone2 # # Generated by Trac 1.4.2 # 2024-04-27T23:56:44+12:00 Mon, 19 Aug 2013 11:35:28 GMT davidb [28087] * main/trunk/greenstone2/perllib/buildcolutils.pm (modified) * main/trunk/greenstone2/perllib/strings.properties (modified) Minor tweak to the formatting of the message produced about the RSS ... Fri, 16 Aug 2013 06:59:26 GMT ak19 [28077] * main/trunk/greenstone2/bin/script/import.pl (modified) * main/trunk/greenstone2/perllib/inexport.pm (modified) Fix noticed when doing diffcol. When the import option saveas was set ... Thu, 15 Aug 2013 04:42:23 GMT ak19 [28066] * main/trunk/greenstone2/perllib/util.pm (modified) Dr Bainbridge fixed a subtle bug where the timestamped tmp folders ... Thu, 15 Aug 2013 02:33:35 GMT sjm84 [28064] * main/trunk/greenstone2/perllib/cgiactions/metadataaction.pm (modified) Added functionality to use prevmetavalue when setting index metadata Thu, 15 Aug 2013 01:50:45 GMT kjdon [28060] * main/trunk/greenstone2/perllib/buildcolutils.pm (modified) sections_sort_on_doc_meta is for solr and lucene Tue, 13 Aug 2013 02:29:05 GMT kjdon [28035] * main/trunk/greenstone2/perllib/lucenebuilder.pm (modified) * main/trunk/greenstone2/perllib/lucenebuildproc.pm (modified) handle sort field none as well as rank Tue, 13 Aug 2013 02:28:29 GMT kjdon [28034] * main/trunk/greenstone2/perllib/collConfigxml.pm (modified) handling importOption and buildOption - they are not options in a ... Tue, 13 Aug 2013 02:19:29 GMT kjdon [28033] * main/trunk/greenstone2/perllib/buildConfigxml.pm (modified) sortfields rank and none don't have a long name, just use the same ... Tue, 13 Aug 2013 01:33:08 GMT kjdon [28031] * main/trunk/greenstone2/common-src/indexers/lucene-gs/src/org/greenstone/LuceneWrapper3/GS2LuceneQuery.java (modified) changes for sorting search results. setReverseSort now takes a ... Sun, 11 Aug 2013 22:49:09 GMT jmt12 [28022] * main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm (modified) Found a bug in that I was defaulting 'subdir_hash_prefix' (the flag ... Sun, 11 Aug 2013 22:47:22 GMT jmt12 [28021] * main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm (modified) Found a bug in that I was defaulting 'subdir_hash_prefix' (the flag ... Wed, 07 Aug 2013 22:18:22 GMT kjdon [27997] * main/trunk/greenstone2/perllib/mgppbuilder.pm (modified) need to check that perfect hash function was generated otherwise we ... Tue, 06 Aug 2013 04:03:42 GMT ak19 [27986] * main/trunk/greenstone2/perllib/mgbuilder.pm (modified) Fixing syntax error: forgot semi-colon Tue, 06 Aug 2013 03:38:51 GMT ak19 [27985] * main/trunk/greenstone2/perllib/mgbuilder.pm (modified) * main/trunk/greenstone2/perllib/mgppbuilder.pm (modified) Now prints out exit status and weights and passes commands that get ... Mon, 05 Aug 2013 21:03:56 GMT sjm84 [27982] * main/trunk/greenstone2/perllib/plugins/BaseMediaConverter.pm (modified) Fixed an error that was occuring on Windows due to backslashes Mon, 05 Aug 2013 07:21:35 GMT ak19 [27973] * main/trunk/greenstone2/perllib/plugins/BasePlugin.pm (modified) Reinstating Dr Bainbridge's fix to getting the extra meta in sorted ... Mon, 05 Aug 2013 05:05:24 GMT ak19 [27970] * main/trunk/greenstone2/perllib/util.pm (modified) Fix to regex. The regex sorting the ordering of the generated ... Fri, 02 Aug 2013 08:40:01 GMT ak19 [27966] * main/trunk/greenstone2/lib/java/server.jar (modified) * main/trunk/greenstone2/setup.bat (modified) GS2 apache server had issues launching because it thought setup.bat ... Thu, 01 Aug 2013 05:44:24 GMT ak19 [27957] * main/trunk/greenstone2/perllib/plugins/BasePlugin.pm (modified) For now, undoing the change made to BasePlugin for the diffcol ... Thu, 01 Aug 2013 04:15:11 GMT kjdon [27955] * main/trunk/greenstone2/perllib/classify/RecentDocumentsList.pm (modified) supports_memberof needs to be called from self otherwise we don't get ... Thu, 01 Aug 2013 02:43:08 GMT ak19 [27949] * main/trunk/greenstone2/perllib/plugins/BasePlugin.pm (modified) Need to sort extra metadata (e.g. ex.PDF.* and ex.File.* meta ... Thu, 25 Jul 2013 02:47:10 GMT ak19 [27927] * main/trunk/greenstone2/perllib/plugins/ZIPPlugin.pm (modified) Correcting error introduced in earlier commit. Mon, 22 Jul 2013 03:07:30 GMT ak19 [27917] * main/trunk/greenstone2/perllib/basebuildproc.pm (modified) 1. Reference to undefined variable. 2. Using FileUtils:: subroutines ... Mon, 22 Jul 2013 03:07:19 GMT ak19 [27916] * main/trunk/greenstone2/perllib/plugins/ZIPPlugin.pm (modified) 1. Reference to undefined variable. 2. Using FileUtils:: subroutines ... Thu, 18 Jul 2013 07:42:36 GMT ak19 [27905] * main/trunk/greenstone2/perllib/classify/Phind.pm (modified) One more instance: Replacing calls to deprecated utils:: subroutines ... Thu, 18 Jul 2013 07:40:51 GMT ak19 [27904] * main/trunk/greenstone2/perllib/classify/Phind.pm (modified) Replacing calls to deprecated utils:: subroutines with FileUtils:: ... Thu, 18 Jul 2013 04:25:12 GMT ak19 [27901] * main/trunk/greenstone2/bin/script/explode_metadata_database.pl (modified) Bugfix to MARCPlugin so that the marc tutorial now works: exploding ... Tue, 16 Jul 2013 09:51:50 GMT ak19 [27882] * main/trunk/greenstone2/perllib/plugouts/DSpacePlugout.pm (modified) Replacing deprecated calls to util:: subroutines with calls to ... Tue, 16 Jul 2013 03:40:31 GMT ak19 [27880] * main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm (modified) Intermediate commit. Bugfix to what broke ISIS/Marc tutorials. The ... Sat, 13 Jul 2013 05:04:21 GMT davidb [27845] * main/trunk/greenstone2/perllib/cpan/JSON/XS.UNUSED (moved) * main/trunk/greenstone2/perllib/cpan/JSON/XS.pm.UNUSED (moved) Moving these to one side as the 'XS'-ness seems to trigger some ... Fri, 12 Jul 2013 06:20:49 GMT ak19 [27831] * main/trunk/greenstone2/setup.bat (modified) Win GS2 setup.bat now checks whether GSDLHOME has already been set Thu, 11 Jul 2013 04:52:48 GMT ak19 [27819] * main/trunk/greenstone2/perllib/util.pm (modified) Using FileUtils::MakeAllDirectories instead of deprecated ... Thu, 11 Jul 2013 04:21:04 GMT kjdon [27818] * main/trunk/greenstone2/perllib/buildConfigxml.pm (modified) adding in stuff for facets Thu, 11 Jul 2013 03:16:50 GMT davidb [27804] * main/trunk/greenstone2/common-src/packages/jdbm/gs-jdbm-1.0.tar.gz (modified) Standard JDBM code opens databases read/write. This doesn't play ... Wed, 10 Jul 2013 23:44:20 GMT kjdon [27803] * main/trunk/greenstone2/perllib/buildConfigxml.pm (modified) * main/trunk/greenstone2/perllib/collConfigxml.pm (modified) code for sort and facet lists Wed, 10 Jul 2013 10:12:29 GMT davidb [27799] * main/trunk/greenstone2/build-src/packages/configure (modified) If the gnome-lib extension is visible (in its standard 'ext' location ... Tue, 09 Jul 2013 06:50:07 GMT ak19 [27791] * main/trunk/greenstone2/perllib/buildcolutils.pm (modified) Bugfix: when running buildcol.pl with -activate flag, the collection ... Tue, 09 Jul 2013 03:06:15 GMT davidb [27789] * main/trunk/greenstone2/perllib/cpan/perl-5.8/HTML (moved) Moving the cpan HTML::... perl modules to inside perl-5.8 as these ... Tue, 09 Jul 2013 00:53:46 GMT kjdon [27787] * main/trunk/greenstone2/perllib/plugins/ImageConverter.pm (modified) * main/trunk/greenstone2/perllib/plugins/ImagePlugin.pm (modified) making the thumbicon img tag valid HTML - adding alt att, and putting ... Tue, 09 Jul 2013 00:52:33 GMT kjdon [27786] * main/trunk/greenstone2/macros/style.dm (modified) the name att of a meta tag must be a single token. So lets use a ... Mon, 08 Jul 2013 23:53:53 GMT kjdon [27785] * main/trunk/greenstone2/macros/nav_css.dm (modified) img tags need alt attribute to be valid html Mon, 08 Jul 2013 10:13:36 GMT davidb [27776] * main/trunk/greenstone2/build-src/packages/Makefile (modified) * main/trunk/greenstone2/build-src/packages/Makefile.in (modified) * main/trunk/greenstone2/build-src/packages/configure (modified) * main/trunk/greenstone2/build-src/packages/cpan/XML-Parser-2.41.tar.gz (added) Moved to the latest version of XML::Parser. This is so newer version ... Mon, 08 Jul 2013 06:24:41 GMT ak19 [27775] * main/trunk/greenstone2/perllib/cgiactions/baseaction.pm (modified) Commented out message on GS3 still not having authentication ... Mon, 08 Jul 2013 05:20:54 GMT davidb [27774] * main/trunk/greenstone2/perllib/XMLParser.pm (modified) Change to work with the Greenstone 3 release-kit/installer Sun, 07 Jul 2013 23:42:32 GMT davidb [27770] * main/trunk/greenstone2/ext/README.txt (modified) Some useful information about extensions Fri, 05 Jul 2013 05:22:28 GMT ak19 [27762] * main/trunk/greenstone2/perllib/FileUtils.pm (modified) Minor bugfix: name of function called was mistyped Fri, 05 Jul 2013 02:53:19 GMT ak19 [27758] * main/trunk/greenstone2/bin/script/exportcol.pl (modified) * main/trunk/greenstone2/bin/script/pdfpstoimg.pl (modified) * main/trunk/greenstone2/perllib/FileUtils.pm (modified) Using FileUtils instead of deprecated util subroutines. Also a typo ... Thu, 04 Jul 2013 05:09:30 GMT ak19 [27757] * main/trunk/greenstone2/bin/script/pdftohtml.pl (modified) Using FileUtils subroutines instead of deprecated calls to util package Wed, 03 Jul 2013 08:52:42 GMT ak19 [27742] * main/trunk/greenstone2/perllib/plugins/HTMLPlugin.pm (modified) Remove Windows carriage returns when Greenstone assigns titles, where ... Tue, 25 Jun 2013 04:36:58 GMT ak19 [27703] * main/trunk/greenstone2/perllib/plugins/HTMLPlugin.pm (modified) Dr Bainbridge fixed the final diffcol issue with Small-HTML on ... Mon, 24 Jun 2013 05:33:17 GMT ak19 [27698] * main/trunk/greenstone2/perllib/inexport.pm (modified) * main/trunk/greenstone2/perllib/strings.properties (modified) import.pl/export.pl now issues a reminder that sortmeta needs to be ... Mon, 24 Jun 2013 05:23:04 GMT ak19 [27697] * main/trunk/greenstone2/perllib/arcinfo.pm (modified) * main/trunk/greenstone2/perllib/plugins/ArchivesInfPlugin.pm (modified) * main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm (modified) * main/trunk/greenstone2/perllib/strings.properties (modified) Dr Bainbridge fixed it so that the gdb files generated on Windows for ... Thu, 20 Jun 2013 04:13:56 GMT ak19 [27675] * main/trunk/greenstone2/perllib/classify.pm (modified) Tidying up my previous 2 commits on this file. Thu, 20 Jun 2013 02:53:17 GMT kjdon [27673] * main/trunk/greenstone2/runtime-src/src/oaiservr/oaiconfig.cpp (modified) need to return the set name\! Wed, 19 Jun 2013 08:51:27 GMT kjdon [27665] * main/trunk/greenstone2/perllib/classify.pm (modified) Needed to add a second change to the previous commit Wed, 19 Jun 2013 08:45:06 GMT kjdon [27664] * main/trunk/greenstone2/perllib/classify.pm (modified) Fixed an issue with building on Windows where a regex in an eval ... Mon, 17 Jun 2013 22:34:55 GMT jmt12 [27646] * main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm (modified) * main/trunk/greenstone2/perllib/strings.properties (modified) Adding an option to allow me to suppress RSS file writing, -no_rss, ... Mon, 17 Jun 2013 22:10:38 GMT jmt12 [27639] * main/trunk/greenstone2/perllib/FileUtils.pm (modified) Change it so failure to open a filehandle isn't fatal - leave it up ... Mon, 17 Jun 2013 05:58:31 GMT ak19 [27635] * main/trunk/greenstone2/makegs2.sh (modified) Checking return status of compilation so it stops on error. Mon, 17 Jun 2013 05:47:45 GMT ak19 [27634] * main/trunk/greenstone2/bin/script/buildcol.pl (modified) Changed order of @INC 'unshifts' due to clash over Greenstone own ... Fri, 14 Jun 2013 05:32:25 GMT ak19 [27627] * main/trunk/greenstone2/common-src/src/gdbmedit/db2txt/db2txt.cpp (modified) * main/trunk/greenstone2/common-src/src/gdbmedit/db2txt/filelock.cpp (modified) File lock code currently experimental, so not in the main greenstone ... Fri, 14 Jun 2013 04:59:57 GMT ak19 [27626] * main/trunk/greenstone2/common-src/src/gdbmedit/db2txt/db2txt.cpp (modified) Dr Bainbridge hopes including sys/types.h may help compiling ... Fri, 14 Jun 2013 04:55:23 GMT ak19 [27625] * main/trunk/greenstone2/common-src/src/gdbmedit/db2txt/db2txt.cpp (modified) Correcting comment Fri, 14 Jun 2013 04:53:49 GMT ak19 [27624] * main/trunk/greenstone2/common-src/src/gdbmedit/db2txt/db2txt.cpp (modified) * main/trunk/greenstone2/common-src/src/gdbmedit/db2txt/filelock.cpp (added) * main/trunk/greenstone2/common-src/src/gdbmedit/db2txt/winlock.cpp (deleted) renamed winlock to filelock as it's not windows specific. Fri, 14 Jun 2013 03:50:20 GMT ak19 [27623] * main/trunk/greenstone2/perllib/plugin.pm (modified) Using FileUtils::FileExists in place of minus-e for the same test. Fri, 14 Jun 2013 03:49:28 GMT ak19 [27622] * main/trunk/greenstone2/makegs2.bat (modified) * main/trunk/greenstone2/makegs2x64.bat (modified) Added in an automatic compilation mode, which you can use by passing ... Wed, 12 Jun 2013 05:23:46 GMT ak19 [27602] * main/trunk/greenstone2/perllib/dbutil/gdbmtxtgz.pm (modified) Adding sorting on keys. Particularly necessary for diffcol.pl ... Wed, 12 Jun 2013 05:11:12 GMT ak19 [27600] * main/trunk/greenstone2/common-src/src/gdbmedit/db2txt/Makefile.in (modified) * main/trunk/greenstone2/common-src/src/gdbmedit/db2txt/db2txt.cpp (modified) * main/trunk/greenstone2/common-src/src/gdbmedit/db2txt/winlock.cpp (added) Two things 1. Moving John's windows (un)locking to new file ... Tue, 11 Jun 2013 21:32:20 GMT davidb [27597] * main/trunk/greenstone2/common-src/src/gdbmedit/db2txt/db2txt.cpp (modified) Additional header file included -- to help with finding the Unix ... Fri, 07 Jun 2013 06:07:01 GMT ak19 [27578] * main/trunk/greenstone2/perllib/plugins/DirectoryPlugin.pm (modified) Doing a sort on all occurrences of readdir, so readdir lists dir ... Thu, 06 Jun 2013 00:02:03 GMT kjdon [27565] * main/trunk/greenstone2/perllib/lucenebuildproc.pm (modified) ignore special keywords which should be only in indexes list, and ... Thu, 06 Jun 2013 00:01:18 GMT kjdon [27564] * main/trunk/greenstone2/perllib/lucenebuilder.pm (modified) check if defined before setting sortfields, as there may not be any Wed, 05 Jun 2013 23:29:54 GMT kjdon [27563] * main/trunk/greenstone2/perllib/buildcolutils.pm (modified) * main/trunk/greenstone2/perllib/colcfg.pm (modified) * main/trunk/greenstone2/perllib/lucenebuilder.pm (modified) * main/trunk/greenstone2/perllib/lucenebuildproc.pm (modified) * main/trunk/greenstone2/perllib/strings.properties (modified) implementing the new build option sections_sort_on_document_metadata Wed, 05 Jun 2013 23:28:20 GMT kjdon [27562] * main/trunk/greenstone2/bin/script/buildcol.pl (modified) added new build option sections_sort_on_document_metadata. same as ... Wed, 05 Jun 2013 02:42:57 GMT ak19 [27553] * main/trunk/greenstone2/runtime-src/src/oaiservr/listsetsaction.cpp (modified) Function needed to return a bool in order to compile. Tue, 04 Jun 2013 05:22:51 GMT ak19 [27538] * main/trunk/greenstone2/perllib/doc.pm (modified) Using FileUtils::removeFiles in place of utils::rm Tue, 04 Jun 2013 04:09:13 GMT ak19 [27535] * main/trunk/greenstone2/perllib/mgbuilder.pm (modified) Using the recommended FileUtils' subroutines for the deprecated ... Tue, 04 Jun 2013 03:56:26 GMT kjdon [27534] * main/trunk/greenstone2/runtime-src/src/oaiservr/abstractlistaction.cpp (modified) * main/trunk/greenstone2/runtime-src/src/oaiservr/listidsaction.cpp (modified) * main/trunk/greenstone2/runtime-src/src/oaiservr/listrecsaction.cpp (modified) * main/trunk/greenstone2/runtime-src/src/oaiservr/listsetsaction.cpp (modified) * main/trunk/greenstone2/runtime-src/src/oaiservr/oaiaction.cpp (modified) * main/trunk/greenstone2/runtime-src/src/oaiservr/oaiconfig.cpp (modified) * main/trunk/greenstone2/runtime-src/src/oaiservr/oaiconfig.h (modified) more changes for super collection stuff. Now can handle having ... Tue, 04 Jun 2013 03:52:23 GMT kjdon [27533] * main/trunk/greenstone2/etc/oai.cfg (modified) added comments about new oaisupercollection configuration command Mon, 03 Jun 2013 23:05:08 GMT kjdon [27528] * main/trunk/greenstone2/runtime-src/src/oaiservr/abstractlistaction.cpp (modified) * main/trunk/greenstone2/runtime-src/src/oaiservr/listidsaction.cpp (modified) * main/trunk/greenstone2/runtime-src/src/oaiservr/listsetsaction.cpp (modified) * main/trunk/greenstone2/runtime-src/src/oaiservr/listsetsaction.h (modified) * main/trunk/greenstone2/runtime-src/src/oaiservr/oaiaction.cpp (modified) * main/trunk/greenstone2/runtime-src/src/oaiservr/oaiconfig.cpp (modified) * main/trunk/greenstone2/runtime-src/src/oaiservr/oaiconfig.h (modified) implemented oaisupercollection. add to oai.cfg and the server will ... Thu, 30 May 2013 09:15:49 GMT ak19 [27522] * main/trunk/greenstone2/bin/script/wvware.pl (modified) * main/trunk/greenstone2/perllib/plugouts/GreenstoneXMLPlugout.pm (modified) Correcting some minor bugs during build. Thu, 30 May 2013 08:53:34 GMT ak19 [27521] * main/trunk/greenstone2/gsicontrol.bat (modified) * main/trunk/greenstone2/gsicontrol.sh (modified) Resetting gsdlhome (reset-gsdlhome command) should not just update ... Thu, 30 May 2013 03:30:27 GMT ak19 [27520] * main/trunk/greenstone2/perllib/FileUtils.pm (modified) Undoing commit to FileUtils::closeFileHandle since John thinks the ... Thu, 30 May 2013 03:20:33 GMT ak19 [27519] * main/trunk/greenstone2/bin/script/wvware.pl (modified) * main/trunk/greenstone2/perllib/plugins/ImageConverter.pm (modified) Using the recommended FileUtils.pm equivalents for util.pm subroutines. Thu, 30 May 2013 03:19:42 GMT ak19 [27518] * main/trunk/greenstone2/perllib/FileUtils.pm (modified) Completing the listing of functions in FileUtils.pm Thu, 30 May 2013 02:53:20 GMT jmt12 [27517] * main/trunk/greenstone2/perllib/plugouts/GreenstoneXMLPlugout.pm (modified) Noticed and replaced a couple of -e's (that should have been -d's ... Thu, 30 May 2013 02:49:40 GMT jmt12 [27516] * main/trunk/greenstone2/perllib/plugouts/GreenstoneXMLPlugout.pm (modified) Matching a call to the new FileUtils::openFileHandle() (in ... Wed, 29 May 2013 22:58:59 GMT jmt12 [27513] * main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm (modified) Restoring the original logic around working_info (although still not ... Wed, 29 May 2013 21:55:24 GMT kjdon [27511] * main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm (modified) pass in file handle as a reference Wed, 29 May 2013 08:41:13 GMT ak19 [27509] * main/trunk/greenstone2/bin/script/gsConvert.pl (modified) * main/trunk/greenstone2/perllib/plugins/BaseMediaConverter.pm (modified) * main/trunk/greenstone2/perllib/plugins/ConvertBinaryFile.pm (modified) * main/trunk/greenstone2/perllib/plugins/PagedImagePlugin.pm (modified) * main/trunk/greenstone2/perllib/util.pm (modified) Using the recommended FileUtils.pm methods in place of the deprecated ... Wed, 29 May 2013 07:26:27 GMT ak19 [27508] * main/trunk/greenstone2/perllib/FileUtils.pm (modified) closeFileHandle() should deal with the case of the file not existing. Tue, 28 May 2013 21:51:07 GMT jmt12 [27505] * main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm (modified) Closing the RSS filehandle with the new function in FileUtils too Tue, 28 May 2013 21:49:08 GMT jmt12 [27504] * main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm (modified) Changing the wat get_new_doc_dir() works so that it creates the new ... Tue, 28 May 2013 02:36:23 GMT kjdon [27503] * main/trunk/greenstone2/perllib/plugins/MARCXMLPlugin.pm (modified) modified to handle files with just a single record. So no collection ... Tue, 28 May 2013 02:02:00 GMT kjdon [27502] * main/trunk/greenstone2/perllib/plugins/ISISPlugin.pm (modified) trying to fix double encoding issue for isis files. not sure that I ... Tue, 28 May 2013 01:47:46 GMT jmt12 [27501] * main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm (modified) Missed (another) old style file open that instead needs to go through ... Tue, 28 May 2013 01:30:10 GMT jmt12 [27500] * main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm (modified) Missed an old style file open that instead needs to go through ... Mon, 27 May 2013 23:47:42 GMT jmt12 [27499] * main/trunk/greenstone2/perllib/plugouts/BasePlugout.pm (modified) New configuration options to control the creation of directories in ... Mon, 27 May 2013 23:45:41 GMT jmt12 [27498] * main/trunk/greenstone2/perllib/strings.properties (modified) Strings for the new options in BasePlugout Mon, 27 May 2013 23:45:18 GMT jmt12 [27497] * main/trunk/greenstone2/perllib/plugouts/GreenstoneXMLPlugout.pm (modified) replacing util::mk_all_dirs() with FileUtils::makeAllDirectories()