about summary refs log tree commit diff
path: root/pkgs/tools/text
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-10-20 00:35:05 +0000
committerAlyssa Ross <hi@alyssa.is>2019-12-20 19:47:42 +0000
commit7e1a3d01d7f63b3a63f8e8288345a526560ceb5a (patch)
tree1536492d9320bdb9377be1f240e593cea32d0d5b /pkgs/tools/text
parent34b5ef1a411f34dbd041247a8bad8958fa7a0403 (diff)
highlight: export Perl bindings
Fails to build on Darwin:

clang++ -shared -s highlight_wrap.o  -L../../src/ -lhighlight -L/nix/store/bi85dm5dqzjfm0i9qj3ijjj9w9xayy8w-lua-5.2.4/lib -llua -lm -o highlight.so
ld: warning: option -s is obsolete and being ignored
Undefined symbols for architecture x86_64:
  "_PL_markstack_max", referenced from:
      __wrap_DataDir_getLangPath in highlight_wrap.o
      __wrap_DataDir_getThemePath in highlight_wrap.o
      __wrap_DataDir_getFiletypesConfPath in highlight_wrap.o
      __wrap_DataDir_getPluginPath in highlight_wrap.o
      __wrap_DataDir_guessFileType in highlight_wrap.o
      __wrap_SyntaxReader_initLuaState in highlight_wrap.o
      __wrap_new_RegexElement in highlight_wrap.o
      ...
  "_PL_markstack_ptr", referenced from:
      __wrap_DataDir_assocByExtension_set in highlight_wrap.o
      __wrap_DataDir_assocByExtension_get in highlight_wrap.o
      __wrap_DataDir_assocByFilename_set in highlight_wrap.o
      __wrap_DataDir_assocByFilename_get in highlight_wrap.o
      __wrap_DataDir_assocByShebang_set in highlight_wrap.o
      __wrap_DataDir_assocByShebang_get in highlight_wrap.o
      __wrap_DataDir_initSearchDirectories in highlight_wrap.o
      ...
  "_PL_stack_base", referenced from:
      __wrap_DataDir_assocByExtension_set in highlight_wrap.o
      __wrap_DataDir_assocByExtension_get in highlight_wrap.o
      __wrap_DataDir_assocByFilename_set in highlight_wrap.o
      __wrap_DataDir_assocByFilename_get in highlight_wrap.o
      __wrap_DataDir_assocByShebang_set in highlight_wrap.o
      __wrap_DataDir_assocByShebang_get in highlight_wrap.o
      __wrap_DataDir_initSearchDirectories in highlight_wrap.o
      ...
  "_PL_stack_sp", referenced from:
      __wrap_DataDir_assocByExtension_set in highlight_wrap.o
      __wrap_DataDir_assocByExtension_get in highlight_wrap.o
      __wrap_DataDir_assocByFilename_set in highlight_wrap.o
      __wrap_DataDir_assocByFilename_get in highlight_wrap.o
      __wrap_DataDir_assocByShebang_set in highlight_wrap.o
      __wrap_DataDir_assocByShebang_get in highlight_wrap.o
      __wrap_DataDir_initSearchDirectories in highlight_wrap.o
      ...
  "_PL_sv_immortals", referenced from:
      __wrap_DataDir_getLangPath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getThemePath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getLangPath__SWIG_1 in highlight_wrap.o
      __wrap_DataDir_getSystemDataPath in highlight_wrap.o
      __wrap_DataDir_getPluginPath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getThemePath__SWIG_1 in highlight_wrap.o
      SWIG_AsVal_bool(sv*, bool*) in highlight_wrap.o
      ...
  "_Perl_croak", referenced from:
      SWIG_croak_null() in highlight_wrap.o
      __wrap_DataDir_getLangPath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getThemePath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getLangPath__SWIG_1 in highlight_wrap.o
      __wrap_DataDir_getLangPath in highlight_wrap.o
      __wrap_DataDir_getSystemDataPath in highlight_wrap.o
      __wrap_DataDir_getPluginPath__SWIG_0 in highlight_wrap.o
      ...
  "_Perl_get_sv", referenced from:
      __wrap_DataDir_assocByExtension_set in highlight_wrap.o
      SWIG_croak_null() in highlight_wrap.o
      __wrap_DataDir_assocByExtension_get in highlight_wrap.o
      __wrap_DataDir_assocByFilename_set in highlight_wrap.o
      __wrap_DataDir_assocByFilename_get in highlight_wrap.o
      __wrap_DataDir_assocByShebang_set in highlight_wrap.o
      __wrap_DataDir_assocByShebang_get in highlight_wrap.o
      ...
  "_Perl_gv_add_by_type", referenced from:
      SWIG_Perl_ConvertPtr(sv*, void**, swig_type_info*, int) in highlight_wrap.o
      SWIG_Perl_MakePtr(sv*, void*, swig_type_info*, int) in highlight_wrap.o
  "_Perl_gv_init_pvn", referenced from:
      SWIG_Perl_MakePtr(sv*, void*, swig_type_info*, int) in highlight_wrap.o
  "_Perl_hv_common", referenced from:
      SWIG_Perl_ConvertPtr(sv*, void**, swig_type_info*, int) in highlight_wrap.o
      SWIG_Perl_MakePtr(sv*, void*, swig_type_info*, int) in highlight_wrap.o
  "_Perl_hv_common_key_len", referenced from:
      SWIG_Perl_ConvertPtr(sv*, void**, swig_type_info*, int) in highlight_wrap.o
      SWIG_Perl_MakePtr(sv*, void*, swig_type_info*, int) in highlight_wrap.o
  "_Perl_markstack_grow", referenced from:
      __wrap_DataDir_getLangPath in highlight_wrap.o
      __wrap_DataDir_getThemePath in highlight_wrap.o
      __wrap_DataDir_getFiletypesConfPath in highlight_wrap.o
      __wrap_DataDir_getPluginPath in highlight_wrap.o
      __wrap_DataDir_guessFileType in highlight_wrap.o
      __wrap_SyntaxReader_initLuaState in highlight_wrap.o
      __wrap_new_RegexElement in highlight_wrap.o
      ...
  "_Perl_mg_find", referenced from:
      SWIG_Perl_ConvertPtr(sv*, void**, swig_type_info*, int) in highlight_wrap.o
      _boot_highlight in highlight_wrap.o
  "_Perl_mg_get", referenced from:
      SWIG_Perl_ConvertPtr(sv*, void**, swig_type_info*, int) in highlight_wrap.o
      SWIG_AsVal_bool(sv*, bool*) in highlight_wrap.o
  "_Perl_newRV_noinc", referenced from:
      SWIG_Perl_MakePtr(sv*, void*, swig_type_info*, int) in highlight_wrap.o
  "_Perl_newSV", referenced from:
      SWIG_Perl_MakePtr(sv*, void*, swig_type_info*, int) in highlight_wrap.o
  "_Perl_newSV_type", referenced from:
      SWIG_Perl_MakePtr(sv*, void*, swig_type_info*, int) in highlight_wrap.o
  "_Perl_newSViv", referenced from:
      __wrap_SyntaxReader_load in highlight_wrap.o
      __wrap_SyntaxReader_getKeywordListGroup in highlight_wrap.o
      __wrap_SyntaxReader_getPersistentSnippetsNum in highlight_wrap.o
      __wrap_SyntaxReader_getOpenDelimiterID in highlight_wrap.o
      __wrap_RegexElement_open_get in highlight_wrap.o
      __wrap_RegexElement_end_get in highlight_wrap.o
      __wrap_RegexElement_capturingGroup_get in highlight_wrap.o
      ...
  "_Perl_newSVuv", referenced from:
      __wrap_SyntaxReader_getRawStringPrefix in highlight_wrap.o
      __wrap_SyntaxReader_getContinuationChar in highlight_wrap.o
      __wrap_RegexElement_kwClass_get in highlight_wrap.o
      __wrap_RegexElement_priority_get in highlight_wrap.o
      __wrap_RegexElement_constraintLineNum_get in highlight_wrap.o
      __wrap_ReGroup_length_get in highlight_wrap.o
      __wrap_ReGroup_kwClass_get in highlight_wrap.o
      ...
  "_Perl_newXS", referenced from:
      _boot_highlight in highlight_wrap.o
  "_Perl_sv_2bool_flags", referenced from:
      SWIG_AsVal_bool(sv*, bool*) in highlight_wrap.o
  "_Perl_sv_2iv_flags", referenced from:
      SWIG_Perl_ConvertPtr(sv*, void**, swig_type_info*, int) in highlight_wrap.o
      SWIG_AsVal_unsigned_SS_int(sv*, unsigned int*) in highlight_wrap.o
      _boot_highlight in highlight_wrap.o
      SWIG_AsVal_long(sv*, long*) in highlight_wrap.o
      SWIG_AsVal_double(sv*, double*) in highlight_wrap.o
  "_Perl_sv_2mortal", referenced from:
      __wrap_SyntaxReader_load in highlight_wrap.o
      __wrap_SyntaxReader_getRawStringPrefix in highlight_wrap.o
      __wrap_SyntaxReader_getContinuationChar in highlight_wrap.o
      __wrap_SyntaxReader_getKeywordListGroup in highlight_wrap.o
      __wrap_SyntaxReader_getPersistentSnippetsNum in highlight_wrap.o
      __wrap_SyntaxReader_getOpenDelimiterID in highlight_wrap.o
      __wrap_RegexElement_open_get in highlight_wrap.o
      ...
  "_Perl_sv_2nv_flags", referenced from:
      SWIG_AsVal_double(sv*, double*) in highlight_wrap.o
  "_Perl_sv_2pv_flags", referenced from:
      SWIG_croak_null() in highlight_wrap.o
      __wrap_DataDir_getLangPath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getThemePath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getLangPath__SWIG_1 in highlight_wrap.o
      __wrap_DataDir_getSystemDataPath in highlight_wrap.o
      __wrap_DataDir_getPluginPath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getThemePath__SWIG_1 in highlight_wrap.o
      ...
  "_Perl_sv_2uv_flags", referenced from:
      SWIG_AsVal_unsigned_SS_int(sv*, unsigned int*) in highlight_wrap.o
      SWIG_AsVal_long(sv*, long*) in highlight_wrap.o
  "_Perl_sv_bless", referenced from:
      SWIG_Perl_MakePtr(sv*, void*, swig_type_info*, int) in highlight_wrap.o
  "_Perl_sv_free2", referenced from:
      SWIG_Perl_MakePtr(sv*, void*, swig_type_info*, int) in highlight_wrap.o
  "_Perl_sv_isobject", referenced from:
      SWIG_Perl_ConvertPtr(sv*, void**, swig_type_info*, int) in highlight_wrap.o
      SWIG_croak_null() in highlight_wrap.o
      __wrap_DataDir_getLangPath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getThemePath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getLangPath__SWIG_1 in highlight_wrap.o
      __wrap_DataDir_getSystemDataPath in highlight_wrap.o
      __wrap_DataDir_getPluginPath__SWIG_0 in highlight_wrap.o
      ...
  "_Perl_sv_magic", referenced from:
      _boot_highlight in highlight_wrap.o
      SWIG_Perl_MakePtr(sv*, void*, swig_type_info*, int) in highlight_wrap.o
  "_Perl_sv_newmortal", referenced from:
      __wrap_DataDir_assocByExtension_set in highlight_wrap.o
      __wrap_DataDir_assocByExtension_get in highlight_wrap.o
      __wrap_DataDir_assocByFilename_set in highlight_wrap.o
      __wrap_DataDir_assocByFilename_get in highlight_wrap.o
      __wrap_DataDir_assocByShebang_set in highlight_wrap.o
      __wrap_DataDir_assocByShebang_get in highlight_wrap.o
      __wrap_DataDir_initSearchDirectories in highlight_wrap.o
      ...
  "_Perl_sv_setiv", referenced from:
      _boot_highlight in highlight_wrap.o
  "_Perl_sv_setpvf", referenced from:
      __wrap_DataDir_assocByExtension_set in highlight_wrap.o
      __wrap_DataDir_assocByExtension_get in highlight_wrap.o
      __wrap_DataDir_assocByFilename_set in highlight_wrap.o
      __wrap_DataDir_assocByFilename_get in highlight_wrap.o
      __wrap_DataDir_assocByShebang_set in highlight_wrap.o
      __wrap_DataDir_assocByShebang_get in highlight_wrap.o
      __wrap_DataDir_initSearchDirectories in highlight_wrap.o
      ...
  "_Perl_sv_setpvn", referenced from:
      __wrap_DataDir_getLangPath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getThemePath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getLangPath__SWIG_1 in highlight_wrap.o
      __wrap_DataDir_getSystemDataPath in highlight_wrap.o
      __wrap_DataDir_getPluginPath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getThemePath__SWIG_1 in highlight_wrap.o
      __wrap_DataDir_getThemePath__SWIG_2 in highlight_wrap.o
      ...
  "_Perl_sv_setref_pv", referenced from:
      __wrap_DataDir_assocByExtension_get in highlight_wrap.o
      __wrap_DataDir_assocByFilename_get in highlight_wrap.o
      __wrap_DataDir_assocByShebang_get in highlight_wrap.o
      __wrap_SyntaxReader_getKeywords in highlight_wrap.o
      __wrap_SyntaxReader_getKeywordClasses in highlight_wrap.o
      __wrap_SyntaxReader_getRegexElements in highlight_wrap.o
      __wrap_SyntaxReader_getPersistentSnippets in highlight_wrap.o
      ...
  "_Perl_sv_setsv_flags", referenced from:
      __wrap_DataDir_getLangPath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getThemePath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getLangPath__SWIG_1 in highlight_wrap.o
      __wrap_DataDir_getSystemDataPath in highlight_wrap.o
      __wrap_DataDir_getPluginPath__SWIG_0 in highlight_wrap.o
      __wrap_DataDir_getThemePath__SWIG_1 in highlight_wrap.o
      __wrap_DataDir_getThemePath__SWIG_2 in highlight_wrap.o
      ...
ld: symbol(s) not found for architecture x86_64
clang-7: error: linker command failed with exit code 1 (use -v to see invocation)
Diffstat (limited to 'pkgs/tools/text')
-rw-r--r--pkgs/tools/text/highlight/default.nix85
1 files changed, 53 insertions, 32 deletions
diff --git a/pkgs/tools/text/highlight/default.nix b/pkgs/tools/text/highlight/default.nix
index 13e8e48a921d7..3a9e8e9ceaf7e 100644
--- a/pkgs/tools/text/highlight/default.nix
+++ b/pkgs/tools/text/highlight/default.nix
@@ -1,37 +1,58 @@
-{ stdenv, fetchFromGitLab, getopt, lua, boost, pkgconfig, gcc }:
+{ stdenv, fetchFromGitLab, getopt, lua, boost, pkgconfig, swig, perl, gcc }:
 
 with stdenv.lib;
 
-stdenv.mkDerivation rec {
-  pname = "highlight";
-  version = "3.54";
-
-  src = fetchFromGitLab {
-    owner = "saalen";
-    repo = "highlight";
-    rev = "v${version}";
-    sha256 = "1144qv3c02hd3qrnms9cxfprdmkvz06vy4zjq500wg4iz7r8654m";
+let
+  self = stdenv.mkDerivation rec {
+    pname = "highlight";
+    version = "3.54";
+
+    src = fetchFromGitLab {
+      owner = "saalen";
+      repo = "highlight";
+      rev = "v${version}";
+      sha256 = "1144qv3c02hd3qrnms9cxfprdmkvz06vy4zjq500wg4iz7r8654m";
+    };
+
+    enableParallelBuilding = true;
+
+    nativeBuildInputs = [ pkgconfig swig perl ] ++ optional stdenv.isDarwin gcc;
+
+    buildInputs = [ getopt lua boost ];
+
+    prePatch = stdenv.lib.optionalString stdenv.cc.isClang ''
+      substituteInPlace src/makefile \
+          --replace 'CXX=g++' 'CXX=clang++'
+    '';
+
+    preConfigure = ''
+      makeFlags="PREFIX=$out conf_dir=$out/etc/highlight/ CXX=$CXX AR=$AR"
+    '';
+
+    # This has to happen _before_ the main build because it does a
+    # `make clean' for some reason.
+    preBuild = optionalString (!stdenv.isDarwin) ''
+      make -C extras/swig $makeFlags perl
+    '';
+
+    postCheck = optionalString (!stdenv.isDarwin) ''
+      perl -Iextras/swig extras/swig/testmod.pl
+    '';
+
+    preInstall = optionalString (!stdenv.isDarwin) ''
+      mkdir -p $out/${perl.libPrefix}
+      install -m644 extras/swig/highlight.{so,pm} $out/${perl.libPrefix}
+      make -C extras/swig clean # Clean up intermediate files.
+    '';
+
+    meta = with stdenv.lib; {
+      description = "Source code highlighting tool";
+      homepage = "http://www.andre-simon.de/doku/highlight/en/highlight.php";
+      platforms = platforms.unix;
+      maintainers = with maintainers; [ ndowens willibutz ];
+    };
   };
 
-  enableParallelBuilding = true;
-
-  nativeBuildInputs = [ pkgconfig ] ++ optional stdenv.isDarwin  gcc ;
-
-  buildInputs = [ getopt lua boost ];
-
-  prePatch = stdenv.lib.optionalString stdenv.cc.isClang ''
-    substituteInPlace src/makefile \
-        --replace 'CXX=g++' 'CXX=clang++'
-  '';
-
-  preConfigure = ''
-    makeFlags="PREFIX=$out conf_dir=$out/etc/highlight/ CXX=$CXX AR=$AR"
-  '';
-
-  meta = with stdenv.lib; {
-    description = "Source code highlighting tool";
-    homepage = "http://www.andre-simon.de/doku/highlight/en/highlight.php";
-    platforms = platforms.unix;
-    maintainers = with maintainers; [ ndowens willibutz ];
-  };
-}
+in
+  if stdenv.isDarwin then self
+  else perl.pkgs.toPerlModule self