DaemonEngine / Urcheon

An asset builder and package manager for Dæmon based games
https://unvanquished.net
ISC License
12 stars 1 forks source link

urcheon: produce DELETED file and translate symlinks #40

Closed illwieckz closed 2 years ago

illwieckz commented 3 years ago

repository: produce DELETE file when building partial dpkdir to tell the engine to ignore files listed there in dependencies of the package sharing the same base name.

There is a special workaround for building since unvanquished/0.52.1 to not consider deleted files as a change so it properly writes the DEPS file of res-players depending on 0.52 and not 0.52.1 (0.52.1 only deleted files then there is no res-players_0.52.1 dpk). After that, deleted file may at least produce a dpk with a DELETED file listing deleted files, hence producing a dpk.

illwieckz commented 2 years ago

Urcheon now knows how to properly produce DELETED file (with translated paths) and translate symbolic links at build time.

For example, when building unvanquished_src.dpkdir this way:

urcheon build -r unvanquished/0.52.1 src/unvanquished_src.dpkdir/

The produced .dpkdir and .dpk will contain a file named DELETED containing this (among other lines):

icons/iconb_repeater.crn

because icons/iconb_repeater.png was deleted since 0.52.1 release.

Notice how the name in DELETED file is translated from PNG to CRN.

And for example if I add textures/niveus/basic_panel_b.jpg as symlink to ../titan/basic_panel_b.jpg into src/res-tremulous_src.dpkdir, when building res-tremulous_src.dpkdir this way:

urcheon build src/res-tremulous_src.dpkdir/

The produced .dpkdir and .dpk will contain a symlink named textures/niveus/basic_panel_b.crn that resolves to ../titan/basic_panel_b.crn.

Notice how both textures/niveus/basic_panel_b.jpg and ../titan/basic_panel_b.jpg were translated to textures/niveus/basic_panel_b.crn and ../titan/basic_panel_b.crn.