lol

Merge pull request #186634 from trofi/update-slang

slang: 2.3.2 -> 2.3.3

authored by

Anderson Torres and committed by
GitHub
2e57a139 e3522b27

+18 -178
+18 -6
pkgs/development/libraries/slang/default.nix
··· 5 5 , pcre 6 6 , readline 7 7 , zlib 8 + , writeScript 8 9 }: 9 10 10 11 stdenv.mkDerivation rec { 11 12 pname = "slang"; 12 - version = "2.3.2"; 13 + version = "2.3.3"; 13 14 14 15 src = fetchurl { 15 16 url = "https://www.jedsoft.org/releases/slang/${pname}-${version}.tar.bz2"; 16 - sha256 = "sha256-/J47D8T2fDwfbUPJDBalxC0Re44oRXxbRoMbi1064xo="; 17 + sha256 = "sha256-+RRQVK4TGXPGEgjqgkhtXdEOPFza0jt8SgYXdDyPWhg="; 17 18 }; 18 19 19 20 outputs = [ "out" "dev" "man" "doc" ]; 20 - 21 - patches = [ ./terminfo-dirs.patch ]; 22 21 23 22 # Fix some wrong hardcoded paths 24 23 preConfigure = '' ··· 51 50 makeFlagsArray+=(AR_CR="${stdenv.cc.targetPrefix}ar cr") 52 51 ''; 53 52 54 - # slang 2.3.2 does not support parallel building 55 - enableParallelBuilding = false; 53 + enableParallelBuilding = true; 56 54 57 55 postInstall = '' 58 56 find "$out"/lib/ -name '*.so' -exec chmod +x "{}" \; 59 57 sed '/^Libs:/s/$/ -lncurses/' -i "$dev"/lib/pkgconfig/slang.pc 60 58 ''; 59 + 60 + passthru = { 61 + updateScript = writeScript "update-slang" '' 62 + #!/usr/bin/env nix-shell 63 + #!nix-shell -i bash -p curl pcre common-updater-scripts 64 + 65 + set -eu -o pipefail 66 + 67 + # Expect the text in format of 'Version 2.3.3</td>' 68 + new_version="$(curl -s https://www.jedsoft.org/slang/ | 69 + pcregrep -o1 'Version ([0-9.]+)</td>')" 70 + update-source-version ${pname} "$new_version" 71 + ''; 72 + }; 61 73 62 74 meta = with lib; { 63 75 description = "A small, embeddable multi-platform programming library";
-172
pkgs/development/libraries/slang/terminfo-dirs.patch
··· 1 - commit c7aa0c07b6522fbbb47ef47bd22f47f1611e7423 2 - Author: John E. Davis <jed@jedsoft.org> 3 - Date: Wed Nov 28 00:46:28 2018 -0500 4 - 5 - pre2.3.3-5: Added support for TERMINFO_DIRS env var 6 - 7 - Modified: removed changes to changelog and version number. 8 - 9 - diff --git a/src/sltermin.c b/src/sltermin.c 10 - index a06d0e4..65d3bbc 100644 11 - --- a/src/sltermin.c 12 - +++ b/src/sltermin.c 13 - @@ -133,6 +133,9 @@ static FILE *open_terminfo (char *file, SLterminfo_Type *h) 14 - unsigned char buf[12]; 15 - int magic; 16 - 17 - +#ifdef SLANG_UNTIC 18 - + (void) fprintf (stdout,"# Trying %s\n", file); 19 - +#endif 20 - /* Alan Cox reported a security problem here if the application using the 21 - * library is setuid. So, I need to make sure open the file as a normal 22 - * user. Unfortunately, there does not appear to be a portable way of 23 - @@ -269,10 +272,73 @@ static char *read_string_table (FILE *fp, SLterminfo_Type *t) 24 - * are implemented by multiple links to the same compiled file. 25 - */ 26 - 27 - +static FILE *try_open_tidir (SLterminfo_Type *ti, const char *tidir, const char *term) 28 - +{ 29 - + char file[1024]; 30 - + 31 - + if (sizeof (file) > strlen (tidir) + 5 + strlen (term)) 32 - + { 33 - + FILE *fp; 34 - + 35 - + sprintf (file, "%s/%c/%s", tidir, *term, term); 36 - + if (NULL != (fp = open_terminfo (file, ti))) 37 - + return fp; 38 - + 39 - + sprintf (file, "%s/%02x/%s", tidir, (unsigned char)*term, term); 40 - + if (NULL != (fp = open_terminfo (file, ti))) 41 - + return fp; 42 - + } 43 - + 44 - + return NULL; 45 - +} 46 - + 47 - +static FILE *try_open_env (SLterminfo_Type *ti, const char *term, const char *envvar) 48 - +{ 49 - + char *tidir; 50 - + 51 - + if (NULL == (tidir = _pSLsecure_getenv (envvar))) 52 - + return NULL; 53 - + 54 - + return try_open_tidir (ti, tidir, term); 55 - +} 56 - + 57 - +static FILE *try_open_home (SLterminfo_Type *ti, const char *term) 58 - +{ 59 - + char home_ti[1024]; 60 - + char *env; 61 - + 62 - + if (NULL == (env = _pSLsecure_getenv ("HOME"))) 63 - + return NULL; 64 - + 65 - + strncpy (home_ti, env, sizeof (home_ti) - 11); 66 - + home_ti [sizeof(home_ti) - 11] = 0; 67 - + strcat (home_ti, "/.terminfo"); 68 - + 69 - + return try_open_tidir (ti, home_ti, term); 70 - +} 71 - + 72 - +static FILE *try_open_env_path (SLterminfo_Type *ti, const char *term, const char *envvar) 73 - +{ 74 - + char tidir[1024]; 75 - + char *env; 76 - + unsigned int i; 77 - + 78 - + if (NULL == (env = _pSLsecure_getenv (envvar))) 79 - + return NULL; 80 - + 81 - + i = 0; 82 - + while (-1 != SLextract_list_element (env, i, ':', tidir, sizeof(tidir))) 83 - + { 84 - + FILE *fp = try_open_tidir (ti, tidir, term); 85 - + if (fp != NULL) return fp; 86 - + i++; 87 - + } 88 - + 89 - + return NULL; 90 - +} 91 - + 92 - static SLCONST char *Terminfo_Dirs [] = 93 - { 94 - - "", /* $TERMINFO */ 95 - - "", /* $HOME/.terminfo */ 96 - #ifdef MISC_TERMINFO_DIRS 97 - MISC_TERMINFO_DIRS, 98 - #endif 99 - @@ -287,6 +353,23 @@ static SLCONST char *Terminfo_Dirs [] = 100 - NULL, 101 - }; 102 - 103 - +static FILE *try_open_hardcoded (SLterminfo_Type *ti, const char *term) 104 - +{ 105 - + const char *tidir, **tidirs; 106 - + 107 - + tidirs = Terminfo_Dirs; 108 - + while (NULL != (tidir = *tidirs++)) 109 - + { 110 - + FILE *fp; 111 - + 112 - + if ((*tidir != 0) 113 - + && (NULL != (fp = try_open_tidir (ti, tidir, term)))) 114 - + return fp; 115 - + } 116 - + 117 - + return NULL; 118 - +} 119 - + 120 - void _pSLtt_tifreeent (SLterminfo_Type *t) 121 - { 122 - if (t == NULL) 123 - @@ -305,11 +388,7 @@ void _pSLtt_tifreeent (SLterminfo_Type *t) 124 - 125 - SLterminfo_Type *_pSLtt_tigetent (SLCONST char *term) 126 - { 127 - - SLCONST char **tidirs, *tidir; 128 - FILE *fp = NULL; 129 - - char file[1024]; 130 - - static char home_ti [1024]; 131 - - char *env; 132 - SLterminfo_Type *ti; 133 - 134 - if ( 135 - @@ -341,33 +420,10 @@ SLterminfo_Type *_pSLtt_tigetent (SLCONST char *term) 136 - /* If we are on a termcap based system, use termcap */ 137 - if (0 == tcap_getent (term, ti)) return ti; 138 - 139 - - if (NULL != (env = _pSLsecure_getenv ("TERMINFO"))) 140 - - Terminfo_Dirs[0] = env; 141 - - 142 - - if (NULL != (env = _pSLsecure_getenv ("HOME"))) 143 - - { 144 - - strncpy (home_ti, env, sizeof (home_ti) - 11); 145 - - home_ti [sizeof(home_ti) - 11] = 0; 146 - - strcat (home_ti, "/.terminfo"); 147 - - Terminfo_Dirs [1] = home_ti; 148 - - } 149 - - 150 - - tidirs = Terminfo_Dirs; 151 - - while (NULL != (tidir = *tidirs++)) 152 - - { 153 - - if (*tidir == 0) 154 - - continue; 155 - - 156 - - if (sizeof (file) > strlen (tidir) + 5 + strlen (term)) 157 - - { 158 - - sprintf (file, "%s/%c/%s", tidir, *term, term); 159 - - if (NULL != (fp = open_terminfo (file, ti))) 160 - - break; 161 - - sprintf (file, "%s/%02x/%s", tidir, (unsigned char)*term, term); 162 - - if (NULL != (fp = open_terminfo (file, ti))) 163 - - break; 164 - - } 165 - - } 166 - + fp = try_open_env_path (ti, term, "TERMINFO_DIRS"); 167 - + if (fp == NULL) fp = try_open_env (ti, term, "TERMINFO"); 168 - + if (fp == NULL) fp = try_open_home (ti, term); 169 - + if (fp == NULL) fp = try_open_hardcoded (ti, term); 170 - 171 - #ifdef SLANG_UNTIC 172 - fp_open_label: