Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 22 additions & 4 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,26 @@ RUN mvn clean package
# Use Eclipse Temurin JDK image to run the application
FROM eclipse-temurin:22-jdk

# Copy the built JAR file from the Maven container
COPY --from=build /app/target/perlonjava-5.42.0.jar /app/perlonjava.jar
WORKDIR /app

# Set the entry point to run the JAR file
ENTRYPOINT ["java", "-jar", "/app/perlonjava.jar"]
# Copy the built JAR file from the Maven container
COPY --from=build /app/target/perlonjava-5.42.0.jar /app/perlonjava-5.42.0.jar

# Copy the wrapper scripts
COPY --from=build /app/jperl /app/jperl
COPY --from=build /app/jcpan /app/jcpan
COPY --from=build /app/jperldoc /app/jperldoc
COPY --from=build /app/jprove /app/jprove

# Copy the Perl bin scripts (needed by jcpan, jperldoc, jprove)
COPY --from=build /app/src/main/perl/bin /app/bin

# Make scripts executable and create symlinks in /usr/local/bin
RUN chmod +x /app/jperl /app/jcpan /app/jperldoc /app/jprove && \
ln -s /app/jperl /usr/local/bin/jperl && \
ln -s /app/jcpan /usr/local/bin/jcpan && \
ln -s /app/jperldoc /usr/local/bin/jperldoc && \
ln -s /app/jprove /usr/local/bin/jprove

# Set the entry point to run jperl by default
ENTRYPOINT ["jperl"]
36 changes: 36 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,39 @@ tasks.buildDeb {
dependsOn installDist
}

// Copy custom wrapper scripts to installDist bin directory
tasks.register('copyWrapperScripts', Copy) {
dependsOn installDist
from(projectDir) {
include 'jperl'
include 'jperl.bat'
include 'jcpan'
include 'jcpan.bat'
include 'jperldoc'
include 'jperldoc.bat'
include 'jprove'
include 'jprove.bat'
}
into "${buildDir}/install/perlonjava/bin"
}

// Copy Perl bin scripts (cpan, perldoc, prove) to installDist bin directory
tasks.register('copyPerlBinScripts', Copy) {
dependsOn installDist
from('src/main/perl/bin') {
include 'cpan'
include 'perldoc'
include 'prove'
}
into "${buildDir}/install/perlonjava/bin"
}

// Make buildDeb depend on both copy tasks
tasks.buildDeb {
dependsOn copyWrapperScripts
dependsOn copyPerlBinScripts
}

// Project metadata
group = 'org.perlonjava'
version = '5.42.0'
Expand Down Expand Up @@ -135,6 +168,9 @@ ospackage {
}

link('/usr/local/bin/jperl', '/opt/perlonjava/bin/jperl')
link('/usr/local/bin/jcpan', '/opt/perlonjava/bin/jcpan')
link('/usr/local/bin/jperldoc', '/opt/perlonjava/bin/jperldoc')
link('/usr/local/bin/jprove', '/opt/perlonjava/bin/jprove')
}

// Java toolchain configuration - requires Java 22 (for FFM API)
Expand Down
13 changes: 12 additions & 1 deletion jcpan
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,15 @@
# Runs the standard cpan script with jperl
#
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
exec "$SCRIPT_DIR/jperl" "$SCRIPT_DIR/src/main/perl/bin/cpan" "$@"

# Find cpan script - check development path first, then installed path
if [ -f "$SCRIPT_DIR/src/main/perl/bin/cpan" ]; then
CPAN_SCRIPT="$SCRIPT_DIR/src/main/perl/bin/cpan"
elif [ -f "$SCRIPT_DIR/bin/cpan" ]; then
CPAN_SCRIPT="$SCRIPT_DIR/bin/cpan"
else
echo "Error: cpan script not found" >&2
exit 1
fi

exec "$SCRIPT_DIR/jperl" "$CPAN_SCRIPT" "$@"
3 changes: 3 additions & 0 deletions jperl
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ export PERLONJAVA_EXECUTABLE="$JPERL_PATH"
# Check development environment first (target directory)
if [ -f "$SCRIPT_DIR/target/perlonjava-5.42.0.jar" ]; then
JAR_PATH="$SCRIPT_DIR/target/perlonjava-5.42.0.jar"
elif [ -f "$SCRIPT_DIR/perlonjava-5.42.0.jar" ]; then
# Docker or local installation with jar in same directory
JAR_PATH="$SCRIPT_DIR/perlonjava-5.42.0.jar"
else
# Use installed package path (when installed via deb package)
JAR_PATH="$SCRIPT_DIR/../lib/perlonjava-5.42.0.jar"
Expand Down
13 changes: 12 additions & 1 deletion jperldoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,15 @@
# Runs the standard perldoc script with jperl
#
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
exec "$SCRIPT_DIR/jperl" "$SCRIPT_DIR/src/main/perl/bin/perldoc" "$@"

# Find perldoc script - check development path first, then installed path
if [ -f "$SCRIPT_DIR/src/main/perl/bin/perldoc" ]; then
PERLDOC_SCRIPT="$SCRIPT_DIR/src/main/perl/bin/perldoc"
elif [ -f "$SCRIPT_DIR/bin/perldoc" ]; then
PERLDOC_SCRIPT="$SCRIPT_DIR/bin/perldoc"
else
echo "Error: perldoc script not found" >&2
exit 1
fi

exec "$SCRIPT_DIR/jperl" "$PERLDOC_SCRIPT" "$@"
13 changes: 12 additions & 1 deletion jprove
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,15 @@
# Runs the standard prove script with jperl
#
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
exec "$SCRIPT_DIR/jperl" "$SCRIPT_DIR/src/main/perl/bin/prove" "$@"

# Find prove script - check development path first, then installed path
if [ -f "$SCRIPT_DIR/src/main/perl/bin/prove" ]; then
PROVE_SCRIPT="$SCRIPT_DIR/src/main/perl/bin/prove"
elif [ -f "$SCRIPT_DIR/bin/prove" ]; then
PROVE_SCRIPT="$SCRIPT_DIR/bin/prove"
else
echo "Error: prove script not found" >&2
exit 1
fi

exec "$SCRIPT_DIR/jperl" "$PROVE_SCRIPT" "$@"
2 changes: 1 addition & 1 deletion src/main/java/org/perlonjava/core/Configuration.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public final class Configuration {
* Automatically populated by Gradle/Maven during build.
* DO NOT EDIT MANUALLY - this value is replaced at build time.
*/
public static final String gitCommitId = "5f22f5e5d";
public static final String gitCommitId = "468444dee";

/**
* Git commit date of the build (ISO format: YYYY-MM-DD).
Expand Down
Loading