Merge pull request #72855 from fgaz/jasmin/init

jasmin: init at 2.4
This commit is contained in:
Daniel Schaefer 2019-11-10 17:09:54 +01:00 committed by GitHub
commit f7ef1a9af5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 89 additions and 0 deletions

View File

@ -0,0 +1,44 @@
{ stdenv
, fetchurl
, unzip
, jdk
, ant
, makeWrapper
, jre
, callPackage
}:
stdenv.mkDerivation rec {
pname = "jasmin";
version = "2.4";
src = fetchurl {
url = "mirror://sourceforge/jasmin/jasmin-${version}/jasmin-${version}.zip";
sha256 = "17a41vr96glcdrdbk88805wwvv1r6w8wg7if23yhd0n6rrl0r8ga";
};
nativeBuildInputs = [ unzip jdk ant makeWrapper ];
buildPhase = "ant all";
installPhase =
''
install -Dm644 jasmin.jar $out/share/java/jasmin.jar
mkdir -p $out/bin
makeWrapper ${jre}/bin/java $out/bin/jasmin \
--add-flags "-jar $out/share/java/jasmin.jar"
'';
passthru.tests = {
minimal-module = callPackage ./test-assemble-hello-world {};
};
meta = with stdenv.lib; {
description = "An assembler for the Java Virtual Machine";
homepage = "http://jasmin.sourceforge.net/";
downloadPage = "https://sourceforge.net/projects/jasmin/files/latest/download";
license = licenses.bsd3;
maintainers = with maintainers; [ fgaz ];
platforms = platforms.all;
};
}

View File

@ -0,0 +1,31 @@
.class public HelloWorld
.super java/lang/Object
;
; standard initializer (calls java.lang.Object's initializer)
;
.method public <init>()V
aload_0
invokenonvirtual java/lang/Object/<init>()V
return
.end method
;
; main() - prints out Hello World
;
.method public static main([Ljava/lang/String;)V
.limit stack 2 ; up to two items can be pushed
; push System.out onto the stack
getstatic java/lang/System/out Ljava/io/PrintStream;
; push a string onto the stack
ldc "Hello World!"
; call the PrintStream.println() method.
invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
; done
return
.end method

View File

@ -0,0 +1,12 @@
{ stdenv, jasmin, jre }:
stdenv.mkDerivation {
name = "jasmin-test-assemble-hello-world";
meta.timeout = 60;
buildCommand = ''
${jasmin}/bin/jasmin ${./HelloWorld.j}
${jre}/bin/java HelloWorld | grep "Hello World"
touch $out
'';
}

View File

@ -8275,6 +8275,8 @@ in
inherit installjdk pluginSupport;
});
jasmin = callPackage ../development/compilers/jasmin { };
javacard-devkit = pkgsi686Linux.callPackage ../development/compilers/javacard-devkit { };
julia_07 = callPackage ../development/compilers/julia/0.7.nix {