From 172d78923b8213af39ceb0198d6766d2fc311120 Mon Sep 17 00:00:00 2001 From: "Antoine R. Dumont" Date: Sun, 15 Feb 2015 00:32:34 +0100 Subject: [PATCH] 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. ``` --- lib/maintainers.nix | 1 + .../compilers/microscheme/default.nix | 41 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 3 files changed, 44 insertions(+) create mode 100644 pkgs/development/compilers/microscheme/default.nix diff --git a/lib/maintainers.nix b/lib/maintainers.nix index 2d18d592e89..174c776b17a 100644 --- a/lib/maintainers.nix +++ b/lib/maintainers.nix @@ -17,6 +17,7 @@ AndersonTorres = "Anderson Torres "; andres = "Andres Loeh "; antono = "Antono Vasiljev "; + ardumont = "Antoine R. Dumont "; aristid = "Aristid Breitkreuz "; arobyn = "Alexei Robyn "; asppsa = "Alastair Pharo "; diff --git a/pkgs/development/compilers/microscheme/default.nix b/pkgs/development/compilers/microscheme/default.nix new file mode 100644 index 00000000000..a9f2fba9409 --- /dev/null +++ b/pkgs/development/compilers/microscheme/default.nix @@ -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 ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 629824b8205..d4846cea0f6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3720,6 +3720,8 @@ let mercury = callPackage ../development/compilers/mercury { }; + microscheme = callPackage ../development/compilers/microscheme { }; + mitscheme = callPackage ../development/compilers/mit-scheme { }; mlton = callPackage ../development/compilers/mlton { };