Add microscheme derivation

(A Scheme subset for Atmel microcontrollers.)

Use of the actual git HEAD because the actual tarball compiles but
segfault at runtime.

Upload the BLINK.ms sample on arduino board (/dev/ttyACM0):

```sh
$ sudo ./result/bin/microscheme -m UNO -d /dev/ttyACM0 -auc ~/repo/perso/microscheme/examples/BLINK.ms
Microscheme 0.8, (C) Ryan Suchocki
>> Treeshaker: After 4 rounds: 84 globals purged! 22 bytes will be
reserved.
>> 18 lines compiled OK
>> Assembling...
>> Uploading...

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100%
0.00s

avrdude: Device signature = 0x1e950f
avrdude: reading input file
"/home/tony/repo/perso/microscheme/examples/BLINK.hex"
avrdude: writing flash (2080 bytes):

Writing | ################################################## | 100%
0.35s

avrdude: 2080 bytes of flash written

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

>> Cleaning Up...
>> Finished.
```
This commit is contained in:
Antoine R. Dumont 2015-02-15 00:32:34 +01:00 committed by Bjørn Forsman
parent 9b81fa284f
commit 172d78923b
3 changed files with 44 additions and 0 deletions

View File

@ -17,6 +17,7 @@
AndersonTorres = "Anderson Torres <torres.anderson.85@gmail.com>"; AndersonTorres = "Anderson Torres <torres.anderson.85@gmail.com>";
andres = "Andres Loeh <ksnixos@andres-loeh.de>"; andres = "Andres Loeh <ksnixos@andres-loeh.de>";
antono = "Antono Vasiljev <self@antono.info>"; antono = "Antono Vasiljev <self@antono.info>";
ardumont = "Antoine R. Dumont <eniotna.t@gmail.com>";
aristid = "Aristid Breitkreuz <aristidb@gmail.com>"; aristid = "Aristid Breitkreuz <aristidb@gmail.com>";
arobyn = "Alexei Robyn <shados@shados.net>"; arobyn = "Alexei Robyn <shados@shados.net>";
asppsa = "Alastair Pharo <asppsa@gmail.com>"; asppsa = "Alastair Pharo <asppsa@gmail.com>";

View File

@ -0,0 +1,41 @@
{ stdenv, fetchgit, vim, avrdude, avrgcclibc, makeWrapper }:
stdenv.mkDerivation rec {
name = "microscheme-${version}";
version = "2015-02-04";
# externalize url/rev/sha256 to permit easier override
rev = "2f14781034a67adc081a22728fbf47a632f4484e";
sha256 = "15bdlmchzbhxj262r2fj78wm4c4hfrap4kyzv8n5b624svszr0zd";
url = https://github.com/ryansuchocki/microscheme.git;
src = fetchgit {
inherit rev;
inherit sha256;
inherit url;
};
buildInputs = [ makeWrapper vim ];
installPhase = ''
mkdir -p $out/bin && make install PREFIX=$out
mkdir -p $out/share/microscheme/
cp -r examples/ $out/share/microscheme
wrapProgram $out/bin/microscheme \
--prefix PATH : "${avrdude}/bin:${avrgcclibc}/bin"
'';
meta = with stdenv.lib; {
homepage = http://microscheme.org;
description = "A Scheme subset for Atmel microcontrollers";
longDescription = ''
Microscheme is a Scheme subset/variant designed for Atmel
microcontrollers, especially as found on Arduino boards.
'';
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ ardumont ];
};
}

View File

@ -3720,6 +3720,8 @@ let
mercury = callPackage ../development/compilers/mercury { }; mercury = callPackage ../development/compilers/mercury { };
microscheme = callPackage ../development/compilers/microscheme { };
mitscheme = callPackage ../development/compilers/mit-scheme { }; mitscheme = callPackage ../development/compilers/mit-scheme { };
mlton = callPackage ../development/compilers/mlton { }; mlton = callPackage ../development/compilers/mlton { };