Skip to content

Fix data storage problems#30

Open
keinstein wants to merge 36 commits into
auriamg:masterfrom
keinstein:master
Open

Fix data storage problems#30
keinstein wants to merge 36 commits into
auriamg:masterfrom
keinstein:master

Conversation

@keinstein

Copy link
Copy Markdown

Hi, with my project I got some strange behaviour of dylibbundler.

Two examples:
https://travis-ci.org/keinstein/mutabor/builds/359407671
https://travis-ci.org/keinstein/macdylibbundler/builds/365191186
Click on one of the builds to see the log files of the builds.

As I don't own a current Mac I used address sanitizer in order to debug dylibbundler. I couldn't figure out the cause of this strange behaviour. But changing to tree based data structures solved the index problems. Other problems have been solved, too.

Other changes:

  • New elements are added to a queue as well as to the set of dependencies.
  • Symbolic links are recorded as a map to the depending object.
  • Each new dependency is added to a queue, so that they can be processed one after another
  • Dependencies are ordered by filename,path/to/file (a cosmetic decition)
  • A test case has been added in order to check my problems
  • Automatic builds and checks using Travis CI (you have to activate it yourself after pulling in .travis.yml).
  • more verbose output (maybe one should introduce a -v option to show them)
  • partial rebuilding
  • fail if stdin is not available and the program requests a user supplied path. In that case the user should provide the directory using the library search path

Tobias Schlemmer added 30 commits March 27, 2018 23:39
Dependencies are now organized using maps and sets. This ensures that no
duplicate entries occur. As there are more lookups than direct acesses and
real iterations this should be running faster than the original approach.
Internally it reduces the worst case complexity from n^4 to n^2*log(n)^2
where n is the number of files. The worst case complexity of external shell
calls is reduced from n^3 to n^2.

Unhandled files are saved in a queue so that we can merge Dependencies directly.

This is not expected to solve all issues with the program so far.
@auriamg

auriamg commented Apr 14, 2018

Copy link
Copy Markdown
Owner

Hi, thanks for the contribution, though this is a pretty huge change and I must admit I don't really have the time to review/test all of that at the moment, so I'm not too sure how to handle that TBH. I'd appreciate if other dylibbundler users could give a hand with testing this and report on whether these changes work for them

@keinstein

Copy link
Copy Markdown
Author

Hi, other users probably won't find this pull request. So this is not an option.
I'd suggest that you switch over to test driven development. Add a test suite for the problems that occurred earlier. A simple example is given in this pull request.

Then you should make sure the test suite compiles properly.
The next step is to add address sanitizer to the compiler option for the debug build that is used to run the test suite. If you got this running, add my test case and check if everything is still working properly.

@auriamg

auriamg commented Apr 24, 2018

Copy link
Copy Markdown
Owner

dylibbundler is a little project I made years and years ago, and I am no longer actively working on it. actually, if someone else volunteered to take over the project, I would gladly let other peoples take a look at it since I just have very little time to invest on it, sorry... I know it's not ideal to let pull requests like that but at this time I am unable to do more

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants