Send patches - preferably formatted by git format-patch - to patches at archlinux32 dot org.
summaryrefslogtreecommitdiff
path: root/TODO.aaron
blob: 3dcdb4be57c85a45b9ae96be5b0a7467b7dbda9c (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
== This is my custom TODO file ==

* Make sure all the alpm_list_t changes are valid (especially alpm_list_free)

* The --debug flag should't need a silly mask.
* PM_LOG_FLOW1 and PM_LOG_FLOW2 seem extraneous at this point. These should both
  be moved to PM_LOG_DEBUG messages, as it's going to end up being impossible to
  keep track of what is "flow1" and what is "flow2"

* src/pacman:
    - There's quite a few single function headers which contain the pacman_*
      functions.  We should move these to a single header (pacman.h) to clean up
      the source a bit.
    - config_t duplicates much of what can be accessed from the alpm_option_*
      interface.  Determine what can / can't be removed and do so.
    - initialize alpm BEFORE parsing args, so we can get rid of a handful of
      local lists and things in pacman.c (see below)
    - fix the "--debug" parameter. requiring a bitmask from the user is silly.
      we can parse this can send a real bitmask to alpm.

* lib/libalpm:
    - Remove `root` param from alpm_initialize.  We can simply initialize to /
      and call set_root at a later time.  This allows us to initiliaze earlier.
    - move logging (alpm_logaction) out of the library.  log files should be
      written by the app, not the library.  Adding a PM_LOG_* constant that
      frontends can recognize and send to a file is probably a good idea.
    - maybe it's my fault, but I see little difference between PM_LOG_FLOW1,
      PM_LOG_FLOW2, and PM_LOG_DEBUG.  We might want to just do away with flow1
      and flow2 and use debug across the board.
    - clear up list allocation/deallocation - some lists need to be free'd, some
      do not and there is no clear indication WHEN this should happen.
    - remove DB entries (directories) on a read error?

* pacman: A LOT of functions are way too long.  There should be an upper limit of
  100-200 lines.  _alpm_add_commit is around 600 lines, and is far too complex.

  Quite a lot of this needs to be refactored as we go.
    Function list (from Dan McGee):
     add.c:
     _alpm_add_commit
     be_files.c:
     _alpm_db_read
     _alpm_db_write
     conflict.c:
     _alpm_checkconflicts
     _alpm_db_find_conflicts
     package.c:
     _alpm_pkg_load (getting a bit long)
     remove.c:
     _alpm_remove_commit
     server.c:
     _alpm_downloadfiles_forreal
     sync.c:
     _alpm_sync_sysupgrade (getting there)
     _alpm_sync_prepare
     _alpm_sync_commit

* pacman: fixup doxygen documentation for public interface

**** BUGS ****
* Removal of conflicts on -A and -U (INCOMPLETE)
* ordering of installed packages based on dependencies
    i.e. pkga depends=(pkgb pkgc), pkgb depends=(pkgc)
    pacman -S pkga pkgb pkgc
    > a depends on b and c, move them: pkgb pkgc pkga
    > b depends on c, move it: pkgc pkgb pkga
    > pacman -S pkgc pkgb pkga
* gensync: get all info from packages instead of PKGBUILDs
  for now, we only need to check the PKGBUILD in case of a
  'force' option
* pacman: add pactest cases/functionality for all -Q operations and make sure
  the output is sane