aboutsummaryrefslogtreecommitdiff
path: root/doc/doc_portage_differences.doxygen
blob: 7f7b334a236863dbc244167a8d5a29395e3bee1b (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
/* vim: set ft=cpp tw=80 sw=4 et spell spelllang=en : */

/**
\page PortageDifferences How Paludis and Portage Differ

This is not a complete list. It's not even vaguely near complete. Rather, it's
a collection of lists of things of interest that are intentionally different
between Paludis and its predecessor, Portage.

\section PortageDifferencesEndUser For the End User

Paludis isn't aimed at end users. Having said that, the following features
would be relevant if it were:

- A whole different configuration system, making it far easier to maintain
  multiple systems, some in chroots, with entirely separate configuration
  files.

- Performance. Paludis is fast.

- Low dependency bloat. No Python, no big external crypto libraries.

- Security integration.

- Multiple repository support, replacing Portage's highly limited overlays.

- Simple per-(category, package, version, anything else) environment variable
  setting (e.g. CFLAGS).

- Licence filtering.

- Hook scripts, for running code after a certain action occurs.

- Wrappers for econf, emake, wget etc to allow user defined command bindings
  (nice, ionice, taskset etc).

- User definable package sets.

- Repositories can deliver news items, warning the user of important changes
  before they take place.

\section PortageDifferencesEbuildDeveloper For the Ebuild Developer

As well as the end user advantages, ebuild authors will benefit from:

- :slot dependencies

- ::repository dependencies

- [use] dependencies

- Circular dependency detection

- Per package use masking, and from this per package use combination
  restrictions.

- Profile-level use forcing, globally and per-package, and from this the
  ability to specify a default in cases where one of n USE flags must be
  enabled.

- Default deep dependency resolution.

- Support for -scm versions.

- Multiple inheritance for profiles.

- Ability to install hook scripts.

- Repository definable package sets.

- Ability to deliver news items to the end user.

\section PortageDifferencesProgrammer For the Programmer

- Proper library / interface separation.

- Reasonable internals documentation, via Doxygen.

- Consistent interfaces for different repository types.

- Modularity where it matters.

- Test suites, to detect the impact of changes.

*/