GNU Astronomy Utilities - Tasks: task #13765, Convert static libraries to shared...
You are not allowed to post comments on this tracker with your current authentication level.
task #13765: Convert static libraries to shared libraries
Submitter: | Mohammad Akhlaghi <makhlaghi> | ||
Submitted: | Thu 08 Oct 2015 01:10:29 AM UTC | ||
Should Start On: | Wed 07 Oct 2015 03:00:00 PM UTC | Should be Finished on: | Wed 07 Oct 2015 03:00:00 PM UTC |
Category: | Libraries | Priority: | 5 - Normal |
Item Group: | Enhancement | Status: | Done |
Privacy: | Public | Percent Complete: | 100% |
Assigned to: | makhlaghi | Open/Closed: | Closed |
Effort: | 0.00 |
( Jump to the original submission )
Fri 23 Sep 2016 11:19:46 AM UTC, comment #22: |
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Mon 12 Sep 2016 01:42:21 PM UTC, comment #21: Library development (mainly documentation) is ongoing on the master branch of the main repository. |
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Sun 04 Sep 2016 12:09:26 AM UTC, comment #20: I have started work on the documentation of the libraries. You can follow the progress on my personal repository's libs-doc-tests branch. If you get to have a look at the explanations, any comments or suggestions would be great. While writing the documentation probably some more tests will be added.
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Sat 03 Sep 2016 04:34:43 PM UTC, comment #19: A new library function `gal_gnuastro_version' was added, so we can check the version of Gnuastro within a program that uses Gnuastro's libraries. A small test was also written for it and we can use it as a template to add more library checks. |
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Tue 30 Aug 2016 09:32:55 AM UTC, comment #18: Ok, I now see the warning about the library non installed (it isn't emphasized in the terminal, that's why I missed it). |
Mosè Giordano <giordano>![]() |
Sun 28 Aug 2016 11:24:04 PM UTC, comment #17: Sorry, I made a few bad typos: the "error"s should have been "warning" and this line
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Sun 28 Aug 2016 11:20:21 PM UTC, comment #16: Thanks for the check, I am very happy it has installed with no problem. It is interesting that you have not seen any errors.
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Sun 28 Aug 2016 08:23:37 PM UTC, comment #15: Great! I checked out the latest revision of Gnuastro, clean the directory (make distclean; git clean -fxd) and then built the whole library from scratch: I didn't see any warning. I tried both "make check" and "make distcheck". If I remember well, libtool warnings are colored (is it corrected?), otherwise I may have missed them (but I looked at the end of the outputs of all commands I ran). |
Mosè Giordano <giordano>![]() |
Sun 28 Aug 2016 12:54:53 AM UTC, comment #14: The library Makefile was updated to combine all the `*.c' sources into one library that is also installable. This update has been pushed to the main repo. See the commit message and diffs for the details.
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Fri 03 Jun 2016 11:39:16 AM UTC, comment #13: Two commits were just pushed to master that were not directly related to this task but still relevant: the two libraries related to txt and fits files were renamed to `txtarray' (from `txtarrayvv') and `fits' (from `fitsarrayvv'). In the latter case, the `_fits_' string would appear two times (redundantly) in some function names, so such functions were renamed to satisfy the new library file name.
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Sun 29 May 2016 12:22:26 PM UTC, comment #12: The "refactor" branch was merged into master and is now on the main repository. Thank you very much for the hard work.
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Sat 30 Apr 2016 11:00:15 AM UTC, comment #11: As discussed before, nearly all the libraries were initially part of a single utility. When they were needed by more than one utility, they were moved to the lib/ directory. So various issues about them are not perfectly ideal for a library: for example filenames, function names, even the function operations (they might be more useful merged with each other or further modularized).
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Sun 08 Nov 2015 02:08:39 AM UTC, comment #10: The use-case you mentioned is indeed valid and does allow for higher customization. So lets stick to the GSL guidelines. Thanks for clarifying the issue.
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Sun 08 Nov 2015 01:08:38 AM UTC, comment #9: I agree we shouldn't implement other conventions uncritically, for example I like how the files are organized in Gnuastro (and this is different from the GSL project), but I think having the prefix in the base name of the header files makes sense.
|
Mosè Giordano <giordano>![]() |
Sun 08 Nov 2015 12:37:01 AM UTC, comment #8: I have still not mastered the markup guidelines here! I had put an asterisk to mark wildcards in the shell. But the markup took each pair of them as the start (and end) of a bold section! So when ever you see the bold test start and end, there was an asterisk!
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Sun 08 Nov 2015 12:31:59 AM UTC, comment #7: While GSL's guidelines are very useful and we are learning from them, we should not implement them un-critically. As discussed below, the library header filename convention of GSL is not useful in Gnuastro's design for example.
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Sat 07 Nov 2015 04:16:31 AM UTC, comment #6: Sorry, I meant to suggest renaming the "include" directory within Gnuastro to "gal" for the headers, not the "lib" directory.
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Sat 07 Nov 2015 04:05:54 AM UTC, comment #5: This just occurred to me: following GSL, after the libraries are installed, the library headers should go in a "gal" directory of the installed libraries directory like GSL.
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Sat 07 Nov 2015 03:39:44 AM UTC, comment #4: I vote for the "gal_" prefix.
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Wed 04 Nov 2015 11:40:52 AM UTC, comment #3: Thanks for the complete explanation Mosè, the GSL experience is indeed very useful and I agree with implementing it.
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Wed 04 Nov 2015 11:21:00 AM UTC, comment #2: To complete this task, we should start using a namespace convention. GSL uses this convention (https://www.gnu.org/software/gsl/design/gsl-design.html#SEC15):
|
Mosè Giordano <giordano>![]() |
Thu 08 Oct 2015 01:14:04 AM UTC, comment #1: This issue is mentioned in the "Internal libraries" section of the manual, but I had forgot to list it here. I am grateful to Mosè for bringing up the issue and so I added it here so it can be tracked. |
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
Thu 08 Oct 2015 01:10:29 AM UTC, original submission:
There are many functions within the libraries that can be used by other programs. But currently the libraries are only linked statically while building and are not installed.
|
Mohammad Akhlaghi <makhlaghi>![]() ![]() |
No files currently attached
Depends on the following items: None found
Items that depend on this one: None found
There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.
Follow 10 latest changes.
Date | Changed by | Updated Field | Previous Value | => | Replaced by |
---|---|---|---|---|---|
2016-09-23 | makhlaghi | Status | In Progress | ![]() |
Done |
Percent Complete | 50% | ![]() |
100% | ||
Assigned to | giordano | ![]() |
makhlaghi | ||
Open/Closed | Open | ![]() |
Closed | ||
2016-09-03 | makhlaghi | Percent Complete | 40% | ![]() |
50% |
2016-08-28 | makhlaghi | Percent Complete | 30% | ![]() |
40% |
2016-05-29 | makhlaghi | Percent Complete | 10% | ![]() |
30% |
2015-11-07 | makhlaghi | Status | Postponed | ![]() |
In Progress |
2015-11-07 | makhlaghi | Assigned to | None | ![]() |
giordano |
2015-11-05 | giordano | Percent Complete | 0% | ![]() |
10% |
All the existing functions in the libraries have now been documented in the book and the documentation has been pushed to the main repository. So I am marking this task as complete and would again like to greatly thank Mosè for his hard work in re-naming all the exported Macros, structures, types and functions into a unified naming convention.
Ofcourse, as I have tried to emphasize in several parts of the book, this is just the first version of the libraries. They will undergo great evolution during the next few releases. Interestingly enough, there are actually practicaly no astronomical operations in them, all the interesting functions are currently in the utilities, not in the libraries.
In time, we will bring them out into the libraries to make Gnuastro's libraries much more useful. Until now the emphasis has been on building the infra-structure. Now that a mostly robust structure is in place, it is really easy to add new functions and headers for the libraries.
So I am now preparing a alpha-release and will release it by tonight. Hopefully by next week (September 30th) we can make the second (version 0.2) release. So please try it out and share your experience for a smooth 0.2 release ;-).