aboutsummaryrefslogtreecommitdiff
blob: 9a517d61253b6f8a350ff8a4eae797d183b4ce68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
************
Introduction
************

Overview
===================================
Auto dependency (autodep) builder is a tool for the analysis of accessed files during 
the build of a package. It also can be used for runtime dependencies analysis.

The tool can trace, log and block access to files of given packages.

It is released under GNU GPL license.

Status
===================================
Autodep is in active developing.

Installing
===================================
1. The package is available in "neurogeek" overlay. To add this overlay use:

.. code-block:: none
   
   layman -a neurogeek

2. Make sure that "source /var/lib/layman/make.conf" is in your /etc/make.conf
3. To install the package type:

.. code-block:: none
   
   emerge autodep

Running
===================================

.. program:: autodep

.. code-block:: none

    autodep [options] <command>

.. cmdoption:: --help, -h

   Show this help message and exit.

.. cmdoption:: -b, --block

   strict mode: Deny all access to files from non-dependency packages.

.. cmdoption:: --blockpkgs=PACKAGES

   Block access to files from this packages.

.. cmdoption:: -f, --files 

   Show all files, accessed and missing (not found).
.. cmdoption:: -v, --verbose 

   Show non-important packages, unknown packages and unknown building stages.
.. cmdoption:: --nocolor, -C

   Don't colorize output
.. cmdoption:: --hooklib

   Use LD_PRELOAD logging approach (default).
.. cmdoption:: --fusefs

   Use FUSE logging approach (slow, but reliable).

Example: showfsevents.py -b lsof,cowsay emerge bash

.. note:: 
   You can use **emerge_strict** command to check dependencies of a packages.
   The command has same syntax as emerge and launches bundled emerge with 
   *depcheckstrict* feature.

Hooklib vs Fusefs
===================================

+------------------------------------------------+-------------+---------------+
|                                                |   Hooklib   |     FuseFS    |
+================================================+=============+===============+
| Who can use this approach?                     | **Any user**|   Only root   |
+------------------------------------------------+-------------+---------------+
| Does approach allows to block access to files? |  **YES**    | **YES**       |
+------------------------------------------------+-------------+---------------+
| Is the overhead in performance noticeable?     |  **NO**     | YES [#f1]_    |
+------------------------------------------------+-------------+---------------+
| What events are logged?                        |  Most [#f2]_| **ALL**       |
+------------------------------------------------+-------------+---------------+
| When is it recomended to use an approach?      | Analysis    | Analysis      |
|                                                | of          | of *runtime*  |
|                                                | *buildtime* | dependencies  |
|                                                | dependencies|               |
+------------------------------------------------+-------------+---------------+
| Are there any pre-requirements                 | **NO**      | FUSE must be  |
| for using an approach?                         |             | enabled in    |
|                                                |             | kernel        |
+------------------------------------------------+-------------+---------------+

.. rubric:: Notes

.. [#f1] FUSE filesystems are slower than a normal one. A Program accesses many files 
   while launching, so this will take more time than usual.
.. [#f2] Loading of Dynamic libraries and direct syscalls will not be logged.

Examples
===================================
.. rubric:: 1. Get the potential dependencies for net-irc/xchat:

.. code-block:: none

    autodep emerge net-irc/xchat

.. rubric:: 2. Get the potential dependencies for net-irc/xchat, blocking 
   x11-misc/util-macros package:

.. code-block:: none

    autodep emerge --blockpkgs x11-misc/util-macros emerge net-irc/xchat

.. rubric:: 3. Get the potential dependencies for net-irc/xchat, and show files 
   accessed:

.. code-block:: none

    autodep --files emerge net-irc/xchat

.. rubric:: 4. Get the runtime dependencies of a xchat and show accessed files:

.. code-block:: none

    autodep --fusefs --files xchat



Indices and tables
==================

* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`