View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0004817 | The Dark Mod | TDM Installer | public | 04.06.2018 03:47 | 04.03.2019 14:50 |
Reporter | stgatilov | Assigned To | stgatilov | ||
Priority | low | Severity | tweak | Reproducibility | N/A |
Status | resolved | Resolution | fixed | ||
OS | Linux | ||||
Product Version | TDM 2.06 | ||||
Target Version | TDM 2.08 | Fixed in Version | TDM 2.08 | ||
Summary | 0004817: Remove boost (and libsvn) from tdm_update | ||||
Description | We have already removed boost from the game itself. Now it's time to get rid of it completely. UPDATE: we decided to also remove libsubversion from packager. This is added to this task. | ||||
Tags | No tags attached. | ||||
Quote of the day (line breaks mine): // get the number of PK4 files in the target directory std::size_t totalFileOperations = std::count_if( fs::directory_iterator(targetPath), fs::directory_iterator(), bind( static_cast<bool(*)(const fs::path&)>(File::IsPK4), std::bind(&fs::directory_entry::path, std::placeholders::_1) ) ); |
|
Things are moderately good thus far. Not as good as with TDM: updater and packager contain tons of boost. I am using the same conversion model as with TDM: I have copied StdString and StdFilesystem files to libtdm_update. Had to expand it significantly. The worst offenders are: 1) boost::filesystem::(recursive_)directory_iterator. Had to replace it with (recursive_d)irectory_enumerate, just as in TDM. 2) boost::program_options. Had to reimplement options parsing. Luckily, updater and packager use only very basic subset (as usual). 3) boost::spirit. I copied IniParser from TDM, now rewriting two other (even simpler) parsers. 4) boost::format. There are 121 occurrences of this. I'm not yet sure how to convert it. Replacing with C-like wrapper around snprintf needs manual inspection of all the cases and is too error-prone. Writing own implementation which would work only for a limited set of types sounds stupid. I'm afraid I will resort to some third-party library like tinyformat for this. P.S. We have three independent implementations of the same CRC32 in our repository. I will reduce that to two =) |
|
I have decided to use tinyformat. It replaces boost::format perfectly (after running a calls-replacing script). The current state is: everything is already done, I'm testing all the stuff (package/update on Windows/Linux). Hopefully, I will commit all the changes rather soon. |
|
I have tested tdm_update both on Windows (update from 2.06 to 2.07) and on Linux (update from 2.05 to 2.07). Also, I have tested packaged on Windows (all 7 commands) and on Linux (create-manifest and create-package). Everything looks good. The only weird things are: 1) Calling "svn list -R ." causes svn to ask credentials for darkmod SVN. 2) When updater tries to delete its own executable, the old build reports error to logfile: Exception while removing file: boost::filesystem::remove: ... The new build does not report this, just silently leaves the file intact. I guess that unlike boost, std::filesystem does not consider "cannot remove" a hard error, instead it just returns false. |
|
Finally committed all the changes in svn revs 7981-7998. I decided to split commit in parts to make bisecting easier in case of any problems. The boost and libsvn libraries are yet in the repo. |
|
Removed the libraries from the repo in svn rev 8017-8020. | |
Date Modified | Username | Field | Change |
---|---|---|---|
04.06.2018 03:47 | stgatilov | New Issue | |
04.06.2018 03:47 | stgatilov | Status | new => assigned |
04.06.2018 03:47 | stgatilov | Assigned To | => stgatilov |
04.06.2018 03:49 | stgatilov | Relationship added | related to 0004810 |
11.06.2018 09:41 | stgatilov | Target Version | TDM 2.07 => |
20.01.2019 07:17 | stgatilov | Target Version | => TDM 2.08 |
24.02.2019 12:55 | stgatilov | Note Added: 0011652 | |
24.02.2019 14:52 | stgatilov | Note Added: 0011653 | |
24.02.2019 14:52 | stgatilov | Note Edited: 0011653 | |
25.02.2019 14:28 | stgatilov | Note Added: 0011659 | |
25.02.2019 15:27 | stgatilov | Note Added: 0011660 | |
25.02.2019 16:46 | stgatilov | Summary | Remove boost from tdm_update (and from SVN) => Remove boost (and libsvn) from tdm_update |
25.02.2019 16:46 | stgatilov | Description Updated | |
25.02.2019 16:47 | stgatilov | Note Added: 0011661 | |
04.03.2019 14:50 | stgatilov | Note Added: 0011667 | |
04.03.2019 14:50 | stgatilov | Status | assigned => resolved |
04.03.2019 14:50 | stgatilov | Fixed in Version | => TDM 2.08 |
04.03.2019 14:50 | stgatilov | Resolution | open => fixed |
19.05.2021 05:34 | stgatilov | Category | TDM Updater => TDM Installer |