Add factor-lang from pdconfig
parent
56a686a071
commit
d5adb9f392
|
@ -31,9 +31,9 @@ let
|
||||||
# l3pp = callPackage ./l3pp { };
|
# l3pp = callPackage ./l3pp { };
|
||||||
# mathsat = callPackage ./mathsat { };
|
# mathsat = callPackage ./mathsat { };
|
||||||
|
|
||||||
foxitreader = callPackage ./foxitreader.nix { openssl = super.openssl_1_0_2; };
|
factor-lang = callPackage ./factor-lang/scope.nix { };
|
||||||
# Used to run diskover file crawler
|
|
||||||
rq = callPackage ./rq { };
|
foxitreader = callPackage ./foxitreader.nix { openssl = prev.openssl_1_0_2; };
|
||||||
|
|
||||||
pharo-with-libs = callPackage ./pharo.nix { libgit2_32 = prev.pkgsi686Linux.libgit2; };
|
pharo-with-libs = callPackage ./pharo.nix { libgit2_32 = prev.pkgsi686Linux.libgit2; };
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
From 812d79ccfa1d702afc12561aa8c05a9b4a158620 Mon Sep 17 00:00:00 2001
|
||||||
|
From: timor <timor.dd@googlemail.com>
|
||||||
|
Date: Thu, 7 Mar 2019 13:49:41 +0100
|
||||||
|
Subject: [PATCH] pathnames: redirect "work" prefix to ~/.local/share/factor
|
||||||
|
|
||||||
|
---
|
||||||
|
core/io/pathnames/pathnames.factor | 5 +++--
|
||||||
|
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/core/io/pathnames/pathnames.factor b/core/io/pathnames/pathnames.factor
|
||||||
|
index d1aed3ad82..6104a0c94b 100644
|
||||||
|
--- a/core/io/pathnames/pathnames.factor
|
||||||
|
+++ b/core/io/pathnames/pathnames.factor
|
||||||
|
@@ -136,7 +136,8 @@ HOOK: resolve-symlinks os ( path -- path' )
|
||||||
|
M: object resolve-symlinks normalize-path ;
|
||||||
|
|
||||||
|
: resource-path ( path -- newpath )
|
||||||
|
- "resource-path" get prepend-path ;
|
||||||
|
+ dup "work" = [ drop "work/" ] when
|
||||||
|
+ "work/" ?head [ "~/.local/share/factor" ] [ "resource-path" get ] if prepend-path ;
|
||||||
|
|
||||||
|
HOOK: home io-backend ( -- dir )
|
||||||
|
|
||||||
|
@@ -219,4 +220,4 @@ C: <pathname> pathname
|
||||||
|
|
||||||
|
M: pathname absolute-path string>> absolute-path ;
|
||||||
|
|
||||||
|
-M: pathname <=> [ string>> ] compare ;
|
||||||
|
\ No newline at end of file
|
||||||
|
+M: pathname <=> [ string>> ] compare ;
|
||||||
|
--
|
||||||
|
2.18.1
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
From da8a4b9c1094a568f443c525ca1ce11f686be1bc Mon Sep 17 00:00:00 2001
|
||||||
|
From: timor <timor.dd@googlemail.com>
|
||||||
|
Date: Thu, 8 Aug 2019 14:13:09 +0200
|
||||||
|
Subject: [PATCH] adjust unit test for finding executables in path for NixOS
|
||||||
|
|
||||||
|
---
|
||||||
|
basis/io/standard-paths/unix/unix-tests.factor | 4 ++--
|
||||||
|
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/basis/io/standard-paths/unix/unix-tests.factor b/basis/io/standard-paths/unix/unix-tests.factor
|
||||||
|
index 986c0564d2..f0772fdcc9 100644
|
||||||
|
--- a/basis/io/standard-paths/unix/unix-tests.factor
|
||||||
|
+++ b/basis/io/standard-paths/unix/unix-tests.factor
|
||||||
|
@@ -5,12 +5,12 @@ sequences tools.test ;
|
||||||
|
|
||||||
|
{ f } [ "" find-in-path ] unit-test
|
||||||
|
{ t } [
|
||||||
|
- "ls" find-in-path { "/bin/ls" "/usr/bin/ls" } member?
|
||||||
|
+ "ls" find-in-path not not
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
{ t } [
|
||||||
|
"/sbin:" "PATH" os-env append "PATH" [
|
||||||
|
"ps" find-in-path
|
||||||
|
- { "/bin/ps" "/sbin/ps" "/usr/bin/ps" } member?
|
||||||
|
+ not not
|
||||||
|
] with-os-env
|
||||||
|
] unit-test
|
||||||
|
--
|
||||||
|
2.19.2
|
||||||
|
|
|
@ -0,0 +1,152 @@
|
||||||
|
{ stdenv, lib, fetchurl, glib, git,
|
||||||
|
rlwrap, curl, pkgconfig, perl, makeWrapper, tzdata, ncurses,
|
||||||
|
pango, cairo, gtk2, gdk_pixbuf, gtkglext, pcre, openal,
|
||||||
|
mesa_glu, xorg, openssl, unzip, udis86, runCommand, interpreter,
|
||||||
|
blas, zlib }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inherit (stdenv.lib) optional;
|
||||||
|
wrapFactor = runtimeLibs:
|
||||||
|
runCommand (lib.appendToName "with-libs" interpreter).name {
|
||||||
|
buildInputs = [ makeWrapper ];} ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
makeWrapper ${interpreter}/bin/factor $out/bin/factor \
|
||||||
|
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath runtimeLibs}
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = "factor-lang-${version}";
|
||||||
|
version = "0.98";
|
||||||
|
rev = "7999e72aecc3c5bc4019d43dc4697f49678cc3b4";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = http://downloads.factorcode.org/releases/0.98/factor-src-0.98.zip;
|
||||||
|
sha256 = "01ip9mbnar4sv60d2wcwfz62qaamdvbykxw3gbhzqa25z36vi3ri";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
./staging-command-line-0.98-pre.patch
|
||||||
|
./0001-pathnames-redirect-work-prefix-to-.local-share-facto.patch
|
||||||
|
./0002-adjust-unit-test-for-finding-executables-in-path-for.patch
|
||||||
|
# preempt https://github.com/factor/factor/pull/2139
|
||||||
|
./fuel-dont-jump-to-using.patch
|
||||||
|
];
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
# There is no ld.so.cache in NixOS so we patch out calls to that completely.
|
||||||
|
# This should work as long as no application code relies on `find-library*`
|
||||||
|
# to return a match, which currently is the case and also a justified assumption.
|
||||||
|
# TODO: put stuff below into patches like above
|
||||||
|
|
||||||
|
sed -i 's#"lib" prepend load-ldconfig-cache#"lib" prepend { }#' \
|
||||||
|
basis/alien/libraries/finder/linux/linux.factor
|
||||||
|
|
||||||
|
# Some other hard-coded paths to fix:
|
||||||
|
sed -i 's#/usr/share/zoneinfo/#${tzdata}/share/zoneinfo/#g' \
|
||||||
|
extra/tzinfo/tzinfo.factor
|
||||||
|
|
||||||
|
sed -i 's#/usr/share/terminfo#${ncurses.out}/share/terminfo#g' \
|
||||||
|
extra/terminfo/terminfo.factor
|
||||||
|
|
||||||
|
# De-memoize xdg-* functions, otherwise they break the image.
|
||||||
|
sed -i 's/^MEMO:/:/' basis/xdg/xdg.factor
|
||||||
|
|
||||||
|
sed -i '4i GIT_LABEL = heads/master-${rev}' GNUmakefile
|
||||||
|
|
||||||
|
# update default paths in factor-listener.el for fuel mode
|
||||||
|
substituteInPlace misc/fuel/fuel-listener.el \
|
||||||
|
--replace '(defcustom fuel-factor-root-dir nil' "(defcustom fuel-factor-root-dir \"$out/lib/factor\""
|
||||||
|
'';
|
||||||
|
|
||||||
|
runtimeLibs = with xorg; [
|
||||||
|
stdenv.glibc.out
|
||||||
|
glib
|
||||||
|
libX11 pango cairo gtk2 gdk_pixbuf gtkglext pcre
|
||||||
|
mesa_glu libXmu libXt libICE libSM openssl udis86
|
||||||
|
openal blas zlib
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = with xorg; [
|
||||||
|
git rlwrap curl pkgconfig perl makeWrapper
|
||||||
|
unzip
|
||||||
|
] ++ runtimeLibs;
|
||||||
|
|
||||||
|
runtimeLibPath = stdenv.lib.makeLibraryPath runtimeLibs;
|
||||||
|
|
||||||
|
configurePhase = "true";
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
make linux-x86-64
|
||||||
|
|
||||||
|
# Factor uses XDG_CACHE_HOME for cache during compilation.
|
||||||
|
# We can't have that. So set it to $TMPDIR/.cache
|
||||||
|
export XDG_CACHE_HOME=$TMPDIR/.cache && mkdir -p $XDG_CACHE_HOME
|
||||||
|
|
||||||
|
# The released image has library path info embedded, so we
|
||||||
|
# first have to recreate the boot image with Nix paths, and
|
||||||
|
# then use it to build the Nix release image.
|
||||||
|
cp boot.unix-x86.64.image factor.image
|
||||||
|
|
||||||
|
# Expose libraries in LD_LIBRARY_PATH for factor
|
||||||
|
export LD_LIBRARY_PATH=${lib.makeLibraryPath runtimeLibs}:$LD_LIBRARY_PATH
|
||||||
|
|
||||||
|
echo "=== Building first full image from boot image..."
|
||||||
|
|
||||||
|
# build full factor image from boot image, saving the state for the next call
|
||||||
|
./factor -script -e='"unix-x86.64" USING: system bootstrap.image memory ; make-image save 0 exit'
|
||||||
|
|
||||||
|
echo "=== Building new boot image..."
|
||||||
|
# make a new bootstrap image
|
||||||
|
./factor -script -e='"unix-x86.64" USING: system bootstrap.image ; make-image 0 exit'
|
||||||
|
|
||||||
|
echo "=== Building final full image..."
|
||||||
|
# rebuild final full factor image to include all patched sources
|
||||||
|
./factor -i=boot.unix-x86.64.image
|
||||||
|
|
||||||
|
'';
|
||||||
|
|
||||||
|
doCheck = true;
|
||||||
|
|
||||||
|
# For now, the check phase runs, but should always return 0. This way the
|
||||||
|
# logs contain the test failures until all unit tests are fixed. Then, it
|
||||||
|
# should return 1 if any test failures have occured.
|
||||||
|
checkPhase = ''
|
||||||
|
./factor -e='USING: tools.test zealot.factor sequences namespaces formatting
|
||||||
|
;
|
||||||
|
zealot-core-vocabs "compiler" suffix [ test ] each :test-failures
|
||||||
|
test-failures get length "Number of failed Tests: %d\n" printf'
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p $out/bin $out/lib/factor
|
||||||
|
cp -r factor factor.image LICENSE.txt README.md basis core extra misc $out/lib/factor
|
||||||
|
|
||||||
|
# Create a wrapper in bin/
|
||||||
|
wrapProgram $out/lib/factor/factor --prefix LD_LIBRARY_PATH : \
|
||||||
|
"${runtimeLibPath}"
|
||||||
|
mv $out/lib/factor/factor.image $out/lib/factor/.factor-wrapped.image
|
||||||
|
mv $out/lib/factor/factor $out/bin/
|
||||||
|
|
||||||
|
# Emacs fuel expects the image being named `factor.image` in the factor base dir
|
||||||
|
ln -s $out/lib/factor/.factor-wrapped.image $out/lib/factor/factor.image
|
||||||
|
|
||||||
|
# Create a wrapper in lib/factor
|
||||||
|
makeWrapper $out/lib/factor/.factor-wrapped $out/lib/factor/factor --prefix LD_LIBRARY_PATH : \
|
||||||
|
"${runtimeLibPath}"
|
||||||
|
|
||||||
|
# install fuel mode for emacs
|
||||||
|
mkdir -p $out/share/emacs/site-lisp
|
||||||
|
ln -s $out/lib/factor/misc/fuel/*.el $out/share/emacs/site-lisp/
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = http://factorcode.org;
|
||||||
|
license = licenses.bsd2;
|
||||||
|
description = "A concatenative, stack-based programming language";
|
||||||
|
|
||||||
|
maintainers = [ maintainers.vrthra maintainers.spacefrogg ];
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
passthru.withLibs = wrapFactor;
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
diff --git a/misc/fuel/fuel-debug.el b/misc/fuel/fuel-debug.el
|
||||||
|
index 7f9dc3ea41..0ee277ede8 100644
|
||||||
|
--- a/misc/fuel/fuel-debug.el
|
||||||
|
+++ b/misc/fuel/fuel-debug.el
|
||||||
|
@@ -308,20 +308,21 @@ the debugger."
|
||||||
|
|
||||||
|
(defun fuel-debug--replace-usings (file uses)
|
||||||
|
(pop-to-buffer (find-file-noselect file))
|
||||||
|
- (goto-char (point-min))
|
||||||
|
- (if (re-search-forward "^USING: " nil t)
|
||||||
|
- (let ((begin (point))
|
||||||
|
- (end (or (and (re-search-forward ";\\( \\|$\\)") (point))
|
||||||
|
- (point))))
|
||||||
|
- (kill-region begin end))
|
||||||
|
- (re-search-forward "^IN: " nil t)
|
||||||
|
- (beginning-of-line)
|
||||||
|
- (open-line 2)
|
||||||
|
- (insert "USING: "))
|
||||||
|
- (let ((start (point))
|
||||||
|
- (tokens (append uses '(";"))))
|
||||||
|
- (insert (mapconcat 'substring-no-properties tokens " "))
|
||||||
|
- (fill-region start (point) nil)))
|
||||||
|
+ (save-excursion
|
||||||
|
+ (goto-char (point-min))
|
||||||
|
+ (if (re-search-forward "^USING: " nil t)
|
||||||
|
+ (let ((begin (point))
|
||||||
|
+ (end (or (and (re-search-forward ";\\( \\|$\\)") (point))
|
||||||
|
+ (point))))
|
||||||
|
+ (kill-region begin end))
|
||||||
|
+ (re-search-forward "^IN: " nil t)
|
||||||
|
+ (beginning-of-line)
|
||||||
|
+ (open-line 2)
|
||||||
|
+ (insert "USING: "))
|
||||||
|
+ (let ((start (point))
|
||||||
|
+ (tokens (append uses '(";"))))
|
||||||
|
+ (insert (mapconcat 'substring-no-properties tokens " "))
|
||||||
|
+ (fill-region start (point) nil))))
|
||||||
|
|
||||||
|
(defun fuel-debug-update-usings ()
|
||||||
|
(interactive)
|
|
@ -0,0 +1,15 @@
|
||||||
|
{ stdenv, pkgs, lib, gnome2,
|
||||||
|
overrides ? (self: super: {})}:
|
||||||
|
|
||||||
|
let
|
||||||
|
inside = (self:
|
||||||
|
let callPackage = pkgs.newScope self ;
|
||||||
|
in rec {
|
||||||
|
recurseForDerivations = true;
|
||||||
|
interpreter = callPackage ./default.nix { inherit (gnome2) gtkglext; };
|
||||||
|
|
||||||
|
# Convenience access for using the returned attribute the same way as the interpreter derivation
|
||||||
|
withLibs = self.interpreter.withLibs;
|
||||||
|
});
|
||||||
|
extensible-self = lib.makeExtensible (lib.extends overrides inside);
|
||||||
|
in extensible-self
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/basis/tools/deploy/backend/backend.factor b/basis/tools/deploy/backend/backend.factor
|
||||||
|
index ec86089dbe..b146168ec9 100644
|
||||||
|
--- a/basis/tools/deploy/backend/backend.factor
|
||||||
|
+++ b/basis/tools/deploy/backend/backend.factor
|
||||||
|
@@ -69,7 +69,7 @@ ERROR: can't-deploy-library-file library ;
|
||||||
|
[ staging-image-name "-output-image=" prepend , ]
|
||||||
|
[ " " join "-include=" prepend , ] bi
|
||||||
|
] [
|
||||||
|
- input-image-name "-i=" prepend ,
|
||||||
|
+ input-image-name resource-path "-i=" prepend ,
|
||||||
|
"-resource-path=" "" resource-path append ,
|
||||||
|
"-run=tools.deploy.restage" ,
|
||||||
|
] bi
|
Loading…
Reference in New Issue