I tried it like this, and got some results, sorry for the messed up formatting, the "code" tag here seems to replace some spaces with tabs:
- download, install
-- download here: https://sourceforge.net/projects/depfin ... t/download
-- un-tar-gz
- run
-- add dependency finder /bin to path
- Code: Select all
export PATH=$DEPENDENCY_FINDER_HOME/bin:$PATH
-- dependency finder needs JAVA_HOME to be set else it looks in /bin/java
- Code: Select all
export JAVA_HOME=/usr/lib/jvm/graalvm-java11
-- possibly filter modules, based on version number in filename or version number set inside the module
- Code: Select all
???
-- prepare dependency data for modules, this creates a 1-1.5mb xml per module:
- Code: Select all
DependencyExtractor -xml -out Paths_of_Glory_9.7.xml $VASSAL_MODULES/Paths_of_Glory_9.7.vmod
DependencyExtractor -xml -out For_the_People_3.2.xml $VASSAL_MODULES/For_the_People_3.2.vmod
-- extract deprecated elements from vassal, then write a report of deprecated elements in use:
- Code: Select all
ListDeprecatedElements -out deprecated.txt $VASSAL_HOME/lib/Vengine.jar
DependencyReporter -out report.txt -show-inbounds -scope-includes-list deprecated.txt Paths_of_Glory_9.7.xml For_the_People_3.2.xml
-- result is an empty file, now do a cross-check by doing the same for the current 3.3 codebase:
- Code: Select all
ListDeprecatedElements -out deprecated_3.3.txt $VASSAL_COMPILED_CLASSES
DependencyReporter -out report_3.3.txt -show-inbounds -scope-includes-list deprecated_3.3.txt Paths_of_Glory_9.7.xml For_the_People_3.2.xml
-- result:
- Code: Select all
$ cat report_3.3.txt
VASSAL.build.module *
Map *
componentCoordinates(java.awt.Point) *
<-- ForThePeople.FTPKeyBufferer.mousePressed(java.awt.event.MouseEvent)
<-- ForThePeople.FTPMenuDisplayer.mouseReleased(java.awt.event.MouseEvent)
mapCoordinates(java.awt.Point) *
<-- ForThePeople.FTPKeyBufferer.mouseReleased(java.awt.event.MouseEvent)
Overall a very convenient tool, can take anything from a jar, zip, vmod, filesystem directory with compiled classes, finds and analyzes every piece of bytecode in it, has lots of other options for analysis and reporting.
Is this a viable tool and should I try writing a full bash script? I'm not a professional bash coder and don't know how the module files are laid out in the filesystem, also don't know the disk space constraints, and wouldn't be able to test this script in a production-like environment. Also don't know if it would be possible to detect the latest versions of the modules by using the filename, the few modules I've looked at have their version in the filename but this might not apply to all modules, and the module version set by the module designers might also not be a reliable criteria for deciding which is latest.