1
0
Fork 0
mirror of https://github.com/ninjamuffin99/Funkin.git synced 2025-11-22 13:13:47 +00:00

Remove hmm dependency to fix HTML5 target

Remove the `hmm` haxelib dependency from the build.

Linking to `hmm` caused `utest` to be transitively linked, which
eventually caused OpenFL to act strangely and instatiate the
application twice on the HTML5 target.

`hmm` was only used for `HaxelibVersions.getLibraryVersions` macro
call. Instead, manually parse the `hmm.json` ourselves to avoid
the dependency. This fixes the HTML5 target.

`hmm` is still used for package management, but no longer linked
in to the build itself.
This commit is contained in:
Mike Welsh 2024-02-15 00:15:21 -08:00
parent 41b54fe7cc
commit 91ab1cb520
3 changed files with 17 additions and 34 deletions

View file

@ -113,7 +113,6 @@
<haxelib name="json2object" /> <!-- JSON parsing --> <haxelib name="json2object" /> <!-- JSON parsing -->
<haxelib name="thx.semver" /> <!-- Version string handling --> <haxelib name="thx.semver" /> <!-- Version string handling -->
<haxelib name="hmm" /> <!-- Read library version data at compile time so it can be baked into logs -->
<haxelib name="hxcpp-debug-server" if="desktop debug" /> <!-- VSCode debug support --> <haxelib name="hxcpp-debug-server" if="desktop debug" /> <!-- VSCode debug support -->
<!--Disable the Flixel core focus lost screen--> <!--Disable the Flixel core focus lost screen-->

View file

@ -64,11 +64,6 @@
"ref": "e9f880522e27134b29df4067f82df7d7e5237b70", "ref": "e9f880522e27134b29df4067f82df7d7e5237b70",
"url": "https://github.com/haxeui/haxeui-flixel" "url": "https://github.com/haxeui/haxeui-flixel"
}, },
{
"name": "hmm",
"type": "haxelib",
"version": "3.1.0"
},
{ {
"name": "hscript", "name": "hscript",
"type": "haxelib", "type": "haxelib",

View file

@ -7,7 +7,7 @@ class HaxelibVersions
public static macro function getLibraryVersions():haxe.macro.Expr.ExprOf<Array<String>> public static macro function getLibraryVersions():haxe.macro.Expr.ExprOf<Array<String>>
{ {
#if !display #if !display
return macro $v{formatHmmData(readHmmData())}; return macro $v{formatHmmData()};
#else #else
// `#if display` is used for code completion. In this case returning an // `#if display` is used for code completion. In this case returning an
// empty string is good enough; We don't want to call functions on every hint. // empty string is good enough; We don't want to call functions on every hint.
@ -17,44 +17,33 @@ class HaxelibVersions
} }
#if (macro) #if (macro)
static function readHmmData():hmm.HmmConfig @SuppressWarnings('checkstyle:Dynamic')
{ static function formatHmmData():Array<String>
return hmm.HmmConfig.HmmConfigs.readHmmJsonOrThrow();
}
static function formatHmmData(hmmData:hmm.HmmConfig):Array<String>
{ {
var result:Array<String> = []; var result:Array<String> = [];
for (library in hmmData.dependencies) var hmmData:Dynamic = haxe.Json.parse(sys.io.File.getContent('hmm.json'));
var dependencies:Array<Dynamic> = cast hmmData.dependencies;
for (library in dependencies)
{ {
switch (library) switch (library.type)
{ {
case Haxelib(name, version): case 'haxelib':
result.push('${name} haxelib(${o(version)})'); result.push('${library.name} haxelib(${library.version ?? 'None'})');
case Git(name, url, ref, dir): case 'git':
result.push('${name} git(${url}/${o(dir, '')}:${o(ref)})'); result.push('${library.name} git(${library.url}/${library.dir ?? ''}:${library.ref ?? 'None'}');
case Mercurial(name, url, ref, dir): case 'mercurial':
result.push('${name} mercurial(${url}/${o(dir, '')}:${o(ref)})'); result.push('${library.name} mercurial(${library.url}/${library.dir ?? ''}:${library.ref ?? 'None'})');
case Dev(name, path): case 'dev':
result.push('${name} dev(${path})'); result.push('${library.name} dev(${library.path})');
case ty:
throw 'Unhandled hmm library type ${ty}';
} }
} }
return result; return result;
} }
static function o(option:haxe.ds.Option<String>, defaultValue:String = 'None'):String
{
switch (option)
{
case Some(value):
return value;
case None:
return defaultValue;
}
}
static function readLibraryCurrentVersion(libraryName:String):String static function readLibraryCurrentVersion(libraryName:String):String
{ {
var path = Path.join([Path.addTrailingSlash(Sys.getCwd()), '.haxelib', libraryName, '.current']); var path = Path.join([Path.addTrailingSlash(Sys.getCwd()), '.haxelib', libraryName, '.current']);