mirror of
https://github.com/AppleCommander/bastools.git
synced 2026-04-21 14:17:46 +00:00
Working on Graal native image capabilities. 'st' looks stable at this point.
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"resources": {
|
||||
"includes": [
|
||||
{
|
||||
"pattern": "META-INF/MANIFEST.MF"
|
||||
}
|
||||
]
|
||||
},
|
||||
"bundles": []
|
||||
}
|
||||
Executable
+19
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash +x
|
||||
|
||||
JAR="$(find tools/st/build/libs/ -type f -not -name '*-plain.jar')"
|
||||
|
||||
function st() {
|
||||
java -agentlib:native-image-agent=config-merge-dir=tools/st/src/main/resources/META-INF/native-image \
|
||||
-jar "${JAR}" \
|
||||
"$@"
|
||||
}
|
||||
|
||||
printf "\n\n*** RUNNING ST THROUGH A NUMBER OF COMMANDS TO CAPTURE DETAILS FOR NATIVE IMAGE ***\n\n"
|
||||
|
||||
st --version
|
||||
st generate --help
|
||||
st extract --help
|
||||
st generate --demo-code --name MOUSE.BIN --output mousedemo.po api/src/test/resources/mouse-bitmap.st
|
||||
st generate --single --name MOUSE.BIN --output mouse.as api/src/test/resources/mouse-bitmap.st
|
||||
st generate --name MOUSE.BIN --output mouse.bin api/src/test/resources/mouse-bitmap.st
|
||||
st extract mouse.bin --stdout
|
||||
@@ -2,6 +2,7 @@ plugins {
|
||||
id 'org.springframework.boot' version "2.7.17"
|
||||
id 'java'
|
||||
id 'application'
|
||||
id 'org.graalvm.buildtools.native' version '0.10.6'
|
||||
}
|
||||
|
||||
java {
|
||||
@@ -13,6 +14,15 @@ repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
jar {
|
||||
manifest {
|
||||
attributes(
|
||||
'Implementation-Title': 'BT CLI',
|
||||
'Implementation-Version': "${project.version} (${new Date().format('yyyy-MM-dd HH:mm')})"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
application {
|
||||
mainClass = "io.github.applecommander.bastools.tools.bt.Main"
|
||||
}
|
||||
@@ -31,3 +41,13 @@ dependencies {
|
||||
implementation 'net.sf.applecommander:applesingle-api:1.2.2'
|
||||
implementation project(':bastools-api')
|
||||
}
|
||||
|
||||
graalvmNative {
|
||||
String osName = System.getProperty('os.name').toLowerCase().split()[0]
|
||||
String osArch = System.getProperty('os.arch').toLowerCase().split()[0]
|
||||
binaries {
|
||||
named("main") {
|
||||
imageName.set("bt-${osName}-${osArch}-${project.version}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"resources": {
|
||||
"includes": [
|
||||
{
|
||||
"pattern": "META-INF/MANIFEST.MF"
|
||||
}
|
||||
]
|
||||
},
|
||||
"bundles": []
|
||||
}
|
||||
@@ -2,6 +2,7 @@ plugins {
|
||||
id 'org.springframework.boot' version "2.7.17"
|
||||
id 'java'
|
||||
id 'application'
|
||||
id 'org.graalvm.buildtools.native' version '0.10.6'
|
||||
}
|
||||
|
||||
java {
|
||||
@@ -13,6 +14,15 @@ repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
jar {
|
||||
manifest {
|
||||
attributes(
|
||||
'Implementation-Title': 'Shape Tools CLI',
|
||||
'Implementation-Version': "${project.version} (${new Date().format('yyyy-MM-dd HH:mm')})"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
application {
|
||||
mainClass = "io.github.applecommander.bastools.tools.st.Main"
|
||||
}
|
||||
@@ -32,3 +42,13 @@ dependencies {
|
||||
implementation 'net.sf.applecommander:AppleCommander:1.9.0'
|
||||
implementation project(':bastools-api')
|
||||
}
|
||||
|
||||
graalvmNative {
|
||||
String osName = System.getProperty('os.name').toLowerCase().split()[0]
|
||||
String osArch = System.getProperty('os.arch').toLowerCase().split()[0]
|
||||
binaries {
|
||||
named("main") {
|
||||
imageName.set("st-${osName}-${osArch}-${project.version}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
# Graal Native Image configuration
|
||||
|
||||
This is a mish-mash of manual and automatic code generation.
|
||||
|
||||
To _update_ the configurations, use:
|
||||
|
||||
```declarative
|
||||
-agentlib:native-image-agent=config-merge-dir=tools/st/src/main/resources/META-INF/native-image
|
||||
```
|
||||
|
||||
Please delete empty files and reformat the JSON!
|
||||
|
||||
When running the JAR from the command line. This particular pathing, suggests that it be run from the root of the project.
|
||||
|
||||
Note: With `st` every subcommand should be executed to capture all the pieces!
|
||||
|
||||
For example:
|
||||
|
||||
```shell
|
||||
TODO
|
||||
```
|
||||
@@ -0,0 +1,6 @@
|
||||
[
|
||||
{
|
||||
"name":"java.lang.Boolean",
|
||||
"methods":[{"name":"getBoolean","parameterTypes":["java.lang.String"] }]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,8 @@
|
||||
[
|
||||
{
|
||||
"type":"agent-extracted",
|
||||
"classes":[
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
[
|
||||
]
|
||||
@@ -0,0 +1,145 @@
|
||||
[
|
||||
{
|
||||
"name":"groovy.lang.Closure"
|
||||
},
|
||||
{
|
||||
"name":"io.github.applecommander.bastools.tools.st.ExtractCommand",
|
||||
"allDeclaredFields":true,
|
||||
"queryAllDeclaredMethods":true,
|
||||
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||
},
|
||||
{
|
||||
"name":"io.github.applecommander.bastools.tools.st.GenerateCommand",
|
||||
"allDeclaredFields":true,
|
||||
"queryAllDeclaredMethods":true,
|
||||
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||
},
|
||||
{
|
||||
"name":"io.github.applecommander.bastools.tools.st.IntegerRangeTypeConverter",
|
||||
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||
},
|
||||
{
|
||||
"name":"io.github.applecommander.bastools.tools.st.Main",
|
||||
"allDeclaredFields":true,
|
||||
"queryAllDeclaredMethods":true,
|
||||
"methods":[{"name":"main","parameterTypes":["java.lang.String[]"] }]
|
||||
},
|
||||
{
|
||||
"name":"io.github.applecommander.bastools.tools.st.VersionProvider",
|
||||
"allDeclaredFields":true,
|
||||
"queryAllDeclaredMethods":true,
|
||||
"methods":[{"name":"<init>","parameterTypes":[] }]
|
||||
},
|
||||
{
|
||||
"name":"java.io.Console",
|
||||
"methods":[{"name":"isTerminal","parameterTypes":[] }]
|
||||
},
|
||||
{
|
||||
"name":"java.lang.Object",
|
||||
"allDeclaredFields":true,
|
||||
"queryAllDeclaredMethods":true
|
||||
},
|
||||
{
|
||||
"name":"java.lang.Runtime",
|
||||
"methods":[{"name":"version","parameterTypes":[] }]
|
||||
},
|
||||
{
|
||||
"name":"java.lang.Runtime$Version",
|
||||
"methods":[{"name":"major","parameterTypes":[] }]
|
||||
},
|
||||
{
|
||||
"name":"java.lang.System",
|
||||
"methods":[{"name":"console","parameterTypes":[] }]
|
||||
},
|
||||
{
|
||||
"name":"java.nio.file.Path"
|
||||
},
|
||||
{
|
||||
"name":"java.nio.file.Paths",
|
||||
"methods":[{"name":"get","parameterTypes":["java.lang.String","java.lang.String[]"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.sql.Connection"
|
||||
},
|
||||
{
|
||||
"name":"java.sql.Driver"
|
||||
},
|
||||
{
|
||||
"name":"java.sql.DriverManager",
|
||||
"methods":[{"name":"getConnection","parameterTypes":["java.lang.String"] }, {"name":"getDriver","parameterTypes":["java.lang.String"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.sql.Time",
|
||||
"methods":[{"name":"<init>","parameterTypes":["long"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.sql.Timestamp",
|
||||
"methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.Duration",
|
||||
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.Instant",
|
||||
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.LocalDate",
|
||||
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.LocalDateTime",
|
||||
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.LocalTime",
|
||||
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.MonthDay",
|
||||
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.OffsetDateTime",
|
||||
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.OffsetTime",
|
||||
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.Period",
|
||||
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.Year",
|
||||
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.YearMonth",
|
||||
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.ZoneId",
|
||||
"methods":[{"name":"of","parameterTypes":["java.lang.String"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.ZoneOffset",
|
||||
"methods":[{"name":"of","parameterTypes":["java.lang.String"] }]
|
||||
},
|
||||
{
|
||||
"name":"java.time.ZonedDateTime",
|
||||
"methods":[{"name":"parse","parameterTypes":["java.lang.CharSequence"] }]
|
||||
},
|
||||
{
|
||||
"name":"picocli.CommandLine$AutoHelpMixin",
|
||||
"allDeclaredFields":true,
|
||||
"queryAllDeclaredMethods":true
|
||||
},
|
||||
{
|
||||
"name":"picocli.CommandLine$HelpCommand",
|
||||
"allDeclaredFields":true,
|
||||
"queryAllDeclaredMethods":true
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"resources":{
|
||||
"includes":[{
|
||||
"pattern":"META-INF/MANIFEST.MF"
|
||||
}, {
|
||||
"pattern":"\\QMETA-INF/services/java.lang.System$LoggerFinder\\E"
|
||||
}, {
|
||||
"pattern":"\\QMETA-INF/services/java.time.zone.ZoneRulesProvider\\E"
|
||||
}, {
|
||||
"pattern":"\\QMETA-INF/services/java.util.spi.ResourceBundleControlProvider\\E"
|
||||
}, {
|
||||
"pattern":"\\Qcom/webcodepro/applecommander/storage/AppleCommander-boot.dump\\E"
|
||||
}, {
|
||||
"pattern":"\\Qcom/webcodepro/applecommander/storage/os/prodos/ProdosFileTypes.properties\\E"
|
||||
}, {
|
||||
"pattern":"\\Qdemo-template.bas\\E"
|
||||
}, {
|
||||
"pattern":"\\Qtemplate.po\\E"
|
||||
}, {
|
||||
"pattern":"demo-template.bas"
|
||||
}, {
|
||||
"pattern":"java.base:\\Qsun/text/resources/LineBreakIteratorData\\E"
|
||||
}, {
|
||||
"pattern":"template.po"
|
||||
}]},
|
||||
"bundles":[{
|
||||
"name":"com.webcodepro.applecommander.storage.StorageBundle",
|
||||
"locales":["und"]
|
||||
}, {
|
||||
"name":"com.webcodepro.applecommander.util.TextBundle",
|
||||
"locales":["und"]
|
||||
}]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"types":[
|
||||
],
|
||||
"lambdaCapturingTypes":[
|
||||
],
|
||||
"proxies":[
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user