115 lines
5.1 KiB
Markdown
115 lines
5.1 KiB
Markdown
|
PACKING ALGORITHM
|
||
|
=================
|
||
|
|
||
|
Begin with a list of content set paths:
|
||
|
'''
|
||
|
/content/dist/rhel/$releasever/$basearch/os
|
||
|
/content/dist/rhel/$releasever/$basearch/debug
|
||
|
/content/dist/rhel/$releasever/$basearch/source/SRPMS
|
||
|
/content/dist/jboss/source
|
||
|
/content/beta/rhel/$releasever/$basearch/os
|
||
|
/content/beta/rhel/$releasever/$basearch/debug
|
||
|
/content/beta/rhel/$releasever/$basearch/source/SRPMS
|
||
|
'''
|
||
|
|
||
|
Create a prefix tree out of the paths, where each node in the tree contains the
|
||
|
names of its children, rather than the children containing its own name:
|
||
|
|
||
|
'''
|
||
|
+-------+ +------+
|
||
|
| | | |
|
||
|
|-------+ |------|
|
||
|
|content+--+-------+ |source+-+---+
|
||
|
+-------+ | | +------+ | |
|
||
|
|-------| | |---|
|
||
|
|dist +--------+-------+ | +---+
|
||
|
+--+beta | | | |
|
||
|
| +-------+ |-------| |
|
||
|
| |jboss +--+
|
||
|
+-------+ |rhel +--+
|
||
|
| | +-------+ |
|
||
|
|-------| |
|
||
|
|rhel +--+-----------+ +-----------+
|
||
|
+-------+ | | | |
|
||
|
|-----------| |-----------|
|
||
|
+----------+$releasever| |$releasever+--+
|
||
|
| +-----------+ +-----------+ |
|
||
|
| |
|
||
|
+---------+ +---------+
|
||
|
| | | |
|
||
|
|---------| |---------|
|
||
|
|$basearch+--+ +--+$basearch| +---+
|
||
|
+---------+ | | +---------+ | |
|
||
|
| | |---|
|
||
|
+--------+ +-------+ +---+
|
||
|
| | | | |
|
||
|
|--------| |-------| |
|
||
|
+---+--------+os | |os +---------+
|
||
|
| | +--+debug | |debug +-----------+---+
|
||
|
|---| | |source +--+ |source +--+ | |
|
||
|
+---+ | +--------+ | +-------+ | |---|
|
||
|
| | | +---+
|
||
|
+---+ +------+ |
|
||
|
| | | | +-----+
|
||
|
|---| |------| | |
|
||
|
+---+ +--+SRPMS | |-----|
|
||
|
| +------+ |SRPMS+--+---+
|
||
|
| +-----+ | |
|
||
|
+---+ |---|
|
||
|
| | +---+
|
||
|
|---|
|
||
|
+---+
|
||
|
'''
|
||
|
|
||
|
This eliminates the duplication in the prefixes of our paths. We now only have
|
||
|
one instance of the word "content", for example. We now find any duplicate
|
||
|
subtrees, remove the duplicate, and point all references from the duplicate to
|
||
|
the original:
|
||
|
|
||
|
'''
|
||
|
+-------+ +------+
|
||
|
| | | |
|
||
|
|-------+ |------|
|
||
|
|content+--+-------+ |source+-+
|
||
|
+-------+ | | +------+ |
|
||
|
|-------| | |
|
||
|
|dist +--------+-------+ | |
|
||
|
+--+beta | | | | |
|
||
|
| +-------+ |-------| | |
|
||
|
| |jboss +--+ |
|
||
|
+-------+-------------------+rhel | |
|
||
|
| | +-------+ |
|
||
|
|-------| |
|
||
|
|rhel +--+-----------+ |
|
||
|
+-------+ | | |
|
||
|
|-----------| |
|
||
|
+----------+$releasever| |
|
||
|
| +-----------+ |
|
||
|
| |
|
||
|
+---------+ |
|
||
|
| | |
|
||
|
|---------| |
|
||
|
|$basearch+--+ |
|
||
|
+---------+ | |
|
||
|
| |
|
||
|
+--------+ |
|
||
|
| | |
|
||
|
|--------| |
|
||
|
+-------+os | |
|
||
|
| +--+debug | |
|
||
|
| | |source +--+ |
|
||
|
| | +--------+ | |
|
||
|
| | | |
|
||
|
| | +------+ |
|
||
|
| +-------+ | | |
|
||
|
| | |------| |
|
||
|
| | +--+SRPMS | |
|
||
|
| | | +------+ |
|
||
|
| | | |
|
||
|
+------------+---+-------------------------+
|
||
|
| |
|
||
|
|---|
|
||
|
+---+
|
||
|
'''
|
||
|
|