taskManeage - Tasks: task #16287, Remove (clean or uninstall) a...


You are not allowed to post comments on this tracker with your current authentication level.

task #16287: Remove (clean or uninstall) a specific package automatically

Submitter:  Pedram Ashofteh-Ardakani <pedram>
Submitted:  Wed 07 Dec 2022 07:38:19 PM UTC
Should Start On:  Wed 07 Dec 2022 12:00:00 AM UTC Should be Finished on:  Wed 07 Dec 2022 12:00:00 AM UTC
Category:  Discussion Priority:  5 - Normal
Status:  None Privacy:  Public
Assigned to:  None Percent Complete:  0%
Open/Closed:  Open Effort:  0.00

Wed 07 Dec 2022 11:26:29 PM UTC, comment #4: 

Let me see if I can clarify Pedram's suggestion. Pedram, please correct me if I am wrong below:

In the first case of uninstalling, this is how I interpreted Pedram's suggestion:

./project configure --uninstall=PROGRAM1,PROGRAM2,...,PROGRAM_N

Everything else would be the same as before, except that we can run 'make uninstall' instead of 'make install' within the build rule and to remove that program's 'version-info/' file.

In the case of cleaning, this is how I interpreted Pedram's suggestion: if the user just wants to "clean" the information of a software (that goes into the software acknowledgements; for example when they update a software, which will keep previous versions in 'version-info/'), the user can run this:

./project configure --cleaninfo=PROGRAM1,PROGRAM2,...,PROGRAM_N

The clean option is pretty easy to implement and is well defined and robust. However, the uninstall option is pretty tricky! Here are some caveats off the top of my head:

  • Any software that is built with Autoconf+Automake will have a 'make uninstall' option. But there are some software using GNU Autotools, but do some funny things manually when installing, that Autoconf can't recognize (and thus can't remove with 'make uninstall'). The same goes for CMake based software.
  • Some C programs exist that don't use GNU Autotools or CMake! They usually also don't have 'make uninstall'!
  • Boud already gave an example of the frustration with Python.

So even if we do implement the first option, there will be many caveats that will annoy users for some poorly-written software (which are a lot in the high-level/other-langauge packages!).

Mohammad Akhlaghi <makhlaghi>
Group administrator
Wed 07 Dec 2022 09:33:19 PM UTC, comment #3: 

Thanks for clarifying :).

So within the current maneage modularity structure, I guess that would mean that along with the current 'make' variable top-level-programs that is set in reproduce/software/config/TARGETS.conf, we would add a variable such as top-level-programs-uninstall , probably best defined just a few lines away, to reduce the chance of someone trying to both install and uninstall the same program.

I connected https://savannah.nongnu.org/task/?16270 to this task, since although we now seem to have a python download/build/install system following recommendations by python developers on irc, I have not succeeded with any uninstalls using manual 'rm' commands, apart from removing the full maneage build and restarting from scratch. Anyway, that's a discussion for 16270.

Boud Roukema <boud>
Group Member
Wed 07 Dec 2022 09:20:33 PM UTC, comment #2: 

Thanks for reaching out Boud, I should've explained better. By 'install' I mean the targets defined to 'install' certain softwares and modules. For example the 'cfitsio's installation target is written in 'reproduce/software/make/high-level.mk'.

It could be nice if we can add the 'remove' target of these software (from now on, or the ones that need repetetive updates on the user side) as well. Then, we can create a shortcut that calls that 'remove' target from the './project configure' or some other option.

I know 'gnuastro' is very dynamic and we need to update the version from time to time (much sooner the official maneage updates).

Pedram Ashofteh-Ardakani <pedram>
Group Member
Wed 07 Dec 2022 09:10:58 PM UTC, comment #1: 

I don't understand what you mean by "We already have defined 'install' instructions for specific programs and specific versions."

In commit 4318670 of maneage, which is the current head of the trunk:

grep -i --color=always "install[^a-z]" project

gives nothing.

Boud Roukema <boud>
Group Member
Wed 07 Dec 2022 07:38:19 PM UTC, original submission:  

It would be nice to add a "clean" target in the makefiles as well. We already have defined "install" instructions for specific programs and specific versions. We could also add the "remove/clean/uninstall" option to "./project" script which removes a specific program.

This might happen especially when someone needs to update a specific program (gnuastro for example!). Currently, one must do this manually with "rm .build/software/installed/bin/ast*" and "rm .build/software/installed/version-info/proglib/gnuastro-X.XX", and then update the version in "high-level.mk" etc.

But a "./project clear gnuastro-X.XX" would be nice.

Pedram Ashofteh-Ardakani <pedram>
Group Member


(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

No files currently attached


Depends on the following items: None found

Items that depend on this one: None found


Carbon-Copy List
  • -email is unavailable- added by makhlaghi (Posted a comment)
  • -email is unavailable- added by boud (Posted a comment)
  • -email is unavailable- added by pedram (Submitted the item)

    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.


    No changes have been made to this item

    Back to the top

    Powered by Savane 3.13-4b48.
    Corresponding source code