From 7e1a3d01d7f63b3a63f8e8288345a526560ceb5a Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sun, 20 Oct 2019 00:35:05 +0000 Subject: [PATCH] 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) --- pkgs/tools/text/highlight/default.nix | 83 +++++++++++++++++---------- 1 file changed, 52 insertions(+), 31 deletions(-) diff --git a/pkgs/tools/text/highlight/default.nix b/pkgs/tools/text/highlight/default.nix index 13e8e48a921..3a9e8e9ceaf 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"; +let + self = stdenv.mkDerivation rec { + pname = "highlight"; + version = "3.54"; - src = fetchFromGitLab { - owner = "saalen"; - repo = "highlight"; - rev = "v${version}"; - sha256 = "1144qv3c02hd3qrnms9cxfprdmkvz06vy4zjq500wg4iz7r8654m"; + 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