Skip to content

Provide a way to clean up generated sources or downloaded archives #6956

@stanhu

Description

@stanhu

Describe the problem as clearly as you can

#3958 solved the problem of cleaning up leftover .o files, but there are a number of gems that pull in other files (e.g. tarballs, source code, etc.) that aren't cleaned up. For example, the gpgme gem extracts a number of library tarballs and compiles them outside of mkmf. This leaves about 43 MB of data around:

Details
root@17079a7809a0:/usr/local/bundle/ruby/3.0.0/gems/gpgme-2.0.22# du -h .
3.3M	./ports/archives
156K	./ports/x86_64-linux-gnu/libgpg-error/1.46/include
284K	./ports/x86_64-linux-gnu/libgpg-error/1.46/bin
44K	./ports/x86_64-linux-gnu/libgpg-error/1.46/share/libgpg-error
8.0K	./ports/x86_64-linux-gnu/libgpg-error/1.46/share/man/man1
12K	./ports/x86_64-linux-gnu/libgpg-error/1.46/share/man
44K	./ports/x86_64-linux-gnu/libgpg-error/1.46/share/common-lisp/source/gpg-error
48K	./ports/x86_64-linux-gnu/libgpg-error/1.46/share/common-lisp/source
52K	./ports/x86_64-linux-gnu/libgpg-error/1.46/share/common-lisp
64K	./ports/x86_64-linux-gnu/libgpg-error/1.46/share/info
20K	./ports/x86_64-linux-gnu/libgpg-error/1.46/share/aclocal
196K	./ports/x86_64-linux-gnu/libgpg-error/1.46/share
8.0K	./ports/x86_64-linux-gnu/libgpg-error/1.46/lib/pkgconfig
296K	./ports/x86_64-linux-gnu/libgpg-error/1.46/lib
936K	./ports/x86_64-linux-gnu/libgpg-error/1.46
940K	./ports/x86_64-linux-gnu/libgpg-error
100K	./ports/x86_64-linux-gnu/gpgme/1.18.0/include
1.4M	./ports/x86_64-linux-gnu/gpgme/1.18.0/bin
464K	./ports/x86_64-linux-gnu/gpgme/1.18.0/share/info
16K	./ports/x86_64-linux-gnu/gpgme/1.18.0/share/aclocal
484K	./ports/x86_64-linux-gnu/gpgme/1.18.0/share
12K	./ports/x86_64-linux-gnu/gpgme/1.18.0/lib/pkgconfig
744K	./ports/x86_64-linux-gnu/gpgme/1.18.0/lib
2.7M	./ports/x86_64-linux-gnu/gpgme/1.18.0
2.7M	./ports/x86_64-linux-gnu/gpgme
32K	./ports/x86_64-linux-gnu/libassuan/2.5.5/include
8.0K	./ports/x86_64-linux-gnu/libassuan/2.5.5/bin
160K	./ports/x86_64-linux-gnu/libassuan/2.5.5/share/info
12K	./ports/x86_64-linux-gnu/libassuan/2.5.5/share/aclocal
176K	./ports/x86_64-linux-gnu/libassuan/2.5.5/share
8.0K	./ports/x86_64-linux-gnu/libassuan/2.5.5/lib/pkgconfig
172K	./ports/x86_64-linux-gnu/libassuan/2.5.5/lib
392K	./ports/x86_64-linux-gnu/libassuan/2.5.5
396K	./ports/x86_64-linux-gnu/libassuan
4.0M	./ports/x86_64-linux-gnu
7.2M	./ports
4.0K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/tests/.libs
8.0K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/tests/etc
104K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/tests/.deps
2.8M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/tests
288K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/src/.libs
156K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/src/syscfg
236K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/src/.deps
2.9M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/src
4.0K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/doc/.libs
12K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/doc/.deps
480K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/doc
104K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/lang/cl
164K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/lang
732K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/build-aux
1.8M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/po
560K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46/m4
11M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46/libgpg-error-1.46
12M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error/1.46
12M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libgpg-error
8.0K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/tests/json/.deps
256K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/tests/json
112K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/tests/gpg/.deps
548K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/tests/gpg
8.0K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/tests/opassuan/.deps
76K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/tests/opassuan
72K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/tests/.deps
44K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/tests/gpgsm/.deps
204K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/tests/gpgsm
1.5M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/tests
732K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/src/.libs
812K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/src/.deps
6.3M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/src
36K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/conf
12K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/doc/examples
1.3M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/doc
228K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/tests
12K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/src/constants/keylist
16K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/src/constants/sig
12K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/src/constants/tofu
12K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/src/constants/data
104K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/src/constants
244K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/src
8.0K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/doc/rst/_build
8.0K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/doc/rst/_static
8.0K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/doc/rst/_templates
36K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/doc/rst
264K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/doc/src
284K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/doc/texinfo
636K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/doc
16K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/examples/howto/advanced/cython
20K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/examples/howto/advanced
208K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/examples/howto
304K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python/examples
1.6M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/python
136K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/cl
84K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/js/BrowserTestExtension/tests
192K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/js/BrowserTestExtension
176K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/js/src
76K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/js/DemoExtension
556K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/js
96K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/qt/tests/.deps
460K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/qt/tests
196K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/qt/src/.deps
1.3M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/qt/src
152K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/qt/doc
1.9M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/qt
20K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/cpp/tests/.deps
120K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/cpp/tests
136K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/cpp/src/.deps
24K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/cpp/src/interfaces
860K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/cpp/src
1.1M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang/cpp
5.2M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/lang
756K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/build-aux
444K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0/m4
18M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0/gpgme-1.18.0
18M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme/1.18.0
18M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/gpgme
4.0K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libassuan/2.5.5/libassuan-2.5.5/tests/.libs
56K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libassuan/2.5.5/libassuan-2.5.5/tests/.deps
1.3M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libassuan/2.5.5/libassuan-2.5.5/tests
8.0K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libassuan/2.5.5/libassuan-2.5.5/contrib
164K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libassuan/2.5.5/libassuan-2.5.5/src/.libs
292K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libassuan/2.5.5/libassuan-2.5.5/src/.deps
1.6M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libassuan/2.5.5/libassuan-2.5.5/src
404K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libassuan/2.5.5/libassuan-2.5.5/doc
772K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libassuan/2.5.5/libassuan-2.5.5/build-aux
380K	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libassuan/2.5.5/libassuan-2.5.5/m4
5.6M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libassuan/2.5.5/libassuan-2.5.5
5.7M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libassuan/2.5.5
5.7M	./ext/gpgme/tmp/x86_64-linux-gnu/ports/libassuan
35M	./ext/gpgme/tmp/x86_64-linux-gnu/ports
35M	./ext/gpgme/tmp/x86_64-linux-gnu
35M	./ext/gpgme/tmp
35M	./ext/gpgme
35M	./ext
108K	./lib/gpgme
1.1M	./lib
43M	.

As far as I can tell, there's no way to pass a list of files/directories to clean up so that the make clean used by mkmf will remove these files.

One alternative may be to have extensions download and build these files in a separate temp directory, but there still may be files that are needed to compile the C extension but can removed after. For example, the pg_query gem uses a 10 MB ext/pg_query/include directory that can be removed after the C extension is installed.

Did you try upgrading rubygems & bundler?

Yes.

Post steps to reproduce the problem

gem install gpgme and look at the disk space used in the gems directory.

gem install pg_query would show the ext/pg_query/include directory.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions