diff options
Diffstat (limited to 'pkgs/applications')
66 files changed, 2919 insertions, 1389 deletions
diff --git a/pkgs/applications/audio/lollypop/default.nix b/pkgs/applications/audio/lollypop/default.nix index e4d508b2a1f..73d8d350f38 100644 --- a/pkgs/applications/audio/lollypop/default.nix +++ b/pkgs/applications/audio/lollypop/default.nix @@ -20,7 +20,7 @@ python3.pkgs.buildPythonApplication rec { pname = "lollypop"; - version = "1.1.4.14"; + version = "1.1.4.16"; format = "other"; doCheck = false; @@ -29,7 +29,7 @@ python3.pkgs.buildPythonApplication rec { url = "https://gitlab.gnome.org/World/lollypop"; rev = "refs/tags/${version}"; fetchSubmodules = true; - sha256 = "004cwbnxss6vmdsc6i0y83h3xbc2bzc0ra4z99pkizkky2mz6swj"; + sha256 = "1azfxc1vc1j4ph0zrfsgz2gac1vwmbj65j6wjlxx3nr8kia4mccl"; }; nativeBuildInputs = [ diff --git a/pkgs/applications/blockchains/wasabiwallet/default.nix b/pkgs/applications/blockchains/wasabiwallet/default.nix index 933e5773eda..41510eebff6 100644 --- a/pkgs/applications/blockchains/wasabiwallet/default.nix +++ b/pkgs/applications/blockchains/wasabiwallet/default.nix @@ -2,11 +2,11 @@ stdenv.mkDerivation rec { pname = "wasabiwallet"; - version = "1.1.6"; + version = "1.1.8"; src = fetchurl { url = "https://github.com/zkSNACKs/WalletWasabi/releases/download/v${version}/WasabiLinux-${version}.tar.gz"; - sha256 = "1i7fhaj9chjlm7qg0h3azy4djnm9rxskbr3dzjj0n9rw8cjdqyq6"; + sha256 = "10w4f9d0li25ifkmlmj6302i70sw3drdwd54d4r7x1n5kc6p164j"; }; dontBuild = true; diff --git a/pkgs/applications/editors/emacs-modes/melpa-packages.nix b/pkgs/applications/editors/emacs-modes/melpa-packages.nix index fe440c146ae..838e57343c4 100644 --- a/pkgs/applications/editors/emacs-modes/melpa-packages.nix +++ b/pkgs/applications/editors/emacs-modes/melpa-packages.nix @@ -68,10 +68,6 @@ env NIXPKGS_ALLOW_BROKEN=1 nix-instantiate --show-trace ../../../../ -A emacsPac inherit (self.melpaPackages) easy-kill; }; - elpy = super.elpy.overrideAttrs(old: { - propagatedUserEnvPkgs = old.propagatedUserEnvPkgs ++ [ external.elpy ]; - }); - emacsql-sqlite = super.emacsql-sqlite.overrideAttrs(old: { buildInputs = old.buildInputs ++ [ pkgs.sqlite ]; diff --git a/pkgs/applications/editors/manuskript/default.nix b/pkgs/applications/editors/manuskript/default.nix index ecbe7e8b719..a9d8ffec43e 100644 --- a/pkgs/applications/editors/manuskript/default.nix +++ b/pkgs/applications/editors/manuskript/default.nix @@ -1,9 +1,11 @@ -{ stdenv, zlib, fetchFromGitHub, python3Packages }: +{ stdenv, zlib, fetchFromGitHub, python3Packages, wrapQtAppsHook }: python3Packages.buildPythonApplication rec { pname = "manuskript"; version = "0.9.0"; + format = "other"; + src = fetchFromGitHub { repo = pname; owner = "olivierkes"; @@ -11,6 +13,8 @@ python3Packages.buildPythonApplication rec { sha256 = "13y1s0kba1ib6g977n7h920kyr7abdw03kpal512m7iwa9g2kdw8"; }; + nativeBuildInputs = [ wrapQtAppsHook ]; + propagatedBuildInputs = [ python3Packages.pyqt5 python3Packages.lxml @@ -30,6 +34,10 @@ python3Packages.buildPythonApplication rec { cp -r sample-projects/ $out/share/${pname} ''; + postFixup = '' + wrapQtApp $out/bin/manuskript + ''; + doCheck = false; meta = { diff --git a/pkgs/applications/gis/whitebox-tools/default.nix b/pkgs/applications/gis/whitebox-tools/default.nix index 4c7f9cde5ce..84d7f3ddb49 100644 --- a/pkgs/applications/gis/whitebox-tools/default.nix +++ b/pkgs/applications/gis/whitebox-tools/default.nix @@ -1,18 +1,21 @@ { stdenv, rustPlatform , fetchFromGitHub, Security }: rustPlatform.buildRustPackage rec { pname = "whitebox_tools"; - version = "0.9.0"; + version = "0.16.0"; src = fetchFromGitHub { owner = "jblindsay"; repo = "whitebox-tools"; - rev = "6221cdf327be70f0ee4f2053b76bfa01c3f37caa"; - sha256 = "1423ga964mz7qkl88vkcm8qfprsksx04aq4sz9v5ghnmdzzvl89x"; + rev = "v${version}"; + sha256 = "1vs4hf2x3qjnffs9kjx56rzl67kpcy8xvng6p0r9fp9mfnblxg6j"; }; buildInputs = stdenv.lib.optional stdenv.isDarwin Security; - cargoSha256 = "11m13h9b75xz8dfisfcykar53qsl1crrp3l75s73gkkkvczlfd24"; + cargoSha256 = "1y3vk8bzsaisx7wrncjxcqdh355f2wk4n59vq5qgj37fph2zpy7f"; + + # failures: structures::polyline::test::test_polyline_split + doCheck = false; meta = with stdenv.lib; { description = "An advanced geospatial data analysis platform"; diff --git a/pkgs/applications/graphics/giv/build.patch b/pkgs/applications/graphics/giv/build.patch deleted file mode 100644 index f57689fd3fa..00000000000 --- a/pkgs/applications/graphics/giv/build.patch +++ /dev/null @@ -1,22 +0,0 @@ -Get the environment propagated to scons forked childs, and correct the dicom plugin about -a typedef of size_t that failed at least on x86_64-linux. - -diff --git a/SConstruct b/SConstruct -index 9e752d6..f93f27f 100644 ---- a/SConstruct -+++ b/SConstruct -@@ -9,13 +9,7 @@ else: - - commit_id = os.popen('git rev-parse HEAD').read().replace('\n','') - --env = Environment(LIBPATH=[], -- CPPFLAGS = cppflags + ['-Wno-deprecated-declarations', -- '-Wno-reorder', -- '-Wno-unused-but-set-variable', -- '-Wno-unused-function'], -- CXXFLAGS=['-std=c++1y'] -- ) -+env = Environment(ENV = os.environ) - - env['SBOX'] = False - env['COMMITIDSHORT'] = commit_id[0:6] diff --git a/pkgs/applications/graphics/giv/default.nix b/pkgs/applications/graphics/giv/default.nix deleted file mode 100644 index 9ba7dbed37b..00000000000 --- a/pkgs/applications/graphics/giv/default.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ stdenv, fetchFromGitHub, gdk-pixbuf, scons, pkgconfig, gtk2, glib -, pcre, cfitsio, perl, gob2, vala, libtiff, json-glib }: - -stdenv.mkDerivation rec { - pname = "giv"; - version = "0.9.26"; - - src = fetchFromGitHub { - owner = "dov"; - repo = "giv"; - rev = "v${version}"; - sha256 = "1sfm8j3hvqij6z3h8xz724d7hjqqbzljl2a6pp4yjpnnrxksnic2"; - }; - - hardeningDisable = [ "format" ]; - - prePatch = '' - sed -i s,/usr/bin/perl,${perl}/bin/perl, doc/eperl - sed -i s,/usr/local,$out, SConstruct - ''; - - patches = [ ./build.patch ]; - - nativeBuildInputs = [ scons pkgconfig vala perl gob2 ]; - buildInputs = [ gdk-pixbuf gtk2 glib pcre cfitsio libtiff json-glib ]; - - meta = with stdenv.lib; { - description = "Cross platform image and hierarchical vector viewer based"; - homepage = http://giv.sourceforge.net/giv/; - license = licenses.gpl2Plus; - maintainers = with maintainers; [ ]; - platforms = with platforms; linux; - }; -} diff --git a/pkgs/applications/graphics/gthumb/default.nix b/pkgs/applications/graphics/gthumb/default.nix index 6bcee18651b..f24d57786ef 100644 --- a/pkgs/applications/graphics/gthumb/default.nix +++ b/pkgs/applications/graphics/gthumb/default.nix @@ -103,6 +103,6 @@ stdenv.mkDerivation rec { description = "Image browser and viewer for GNOME"; platforms = platforms.linux; license = licenses.gpl2Plus; - maintainers = [ maintainers.mimadrid ]; + maintainers = [ maintainers.mimame ]; }; } diff --git a/pkgs/applications/graphics/krita/default.nix b/pkgs/applications/graphics/krita/default.nix index 83489e1a24c..30f7739167c 100644 --- a/pkgs/applications/graphics/krita/default.nix +++ b/pkgs/applications/graphics/krita/default.nix @@ -10,11 +10,11 @@ mkDerivation rec { pname = "krita"; - version = "4.2.5"; + version = "4.2.6"; src = fetchurl { - url = "https://download.kde.org/stable/${pname}/${version}/${pname}-${version}.tar.gz"; - sha256 = "1f14r2mrqasl6nr3sss0xy2h8xlxd5wdcjcd64m9nz2gwlm39r7w"; + url = "https://download.kde.org/stable/${pname}/${version}/${pname}-${version}.tar.xz"; + sha256 = "0qdaw8xx3h91v8iw6nw2h276ka8hflaq4r4qwz5mqfd3h254jzym"; }; nativeBuildInputs = [ cmake extra-cmake-modules python3Packages.sip makeWrapper ]; diff --git a/pkgs/applications/misc/ape/default.nix b/pkgs/applications/misc/ape/default.nix index e78ba2df999..0d8ebccb3d0 100644 --- a/pkgs/applications/misc/ape/default.nix +++ b/pkgs/applications/misc/ape/default.nix @@ -1,33 +1,33 @@ { stdenv, swiProlog, makeWrapper, fetchFromGitHub, - lexicon ? "lexicon/clex_lexicon.pl", + lexicon ? "prolog/lexicon/clex_lexicon.pl", pname ? "ape", description ? "Parser for Attempto Controlled English (ACE)", license ? with stdenv.lib; licenses.lgpl3 }: stdenv.mkDerivation rec { - name = "${pname}-${version}"; - version = "6.7-131003"; + inherit pname; + version = "2019-08-10"; buildInputs = [ swiProlog makeWrapper ]; src = fetchFromGitHub { owner = "Attempto"; repo = "APE"; - rev = version; - sha256 = "0cw47qjg4896kw3vps6rfs02asvscsqvcfdiwgfmqb3hvykb1sdx"; + rev = "113b81621262d7a395779465cb09397183e6f74c"; + sha256 = "0xyvna2fbr18hi5yvm0zwh77q02dfna1g4g53z9mn2rmlfn2mhjh"; }; patchPhase = '' # We move the file first to avoid "same file" error in the default case cp ${lexicon} new_lexicon.pl - rm lexicon/clex_lexicon.pl - cp new_lexicon.pl lexicon/clex_lexicon.pl + rm prolog/lexicon/clex_lexicon.pl + cp new_lexicon.pl prolog/lexicon/clex_lexicon.pl ''; buildPhase = '' - make build + make SHELL=${stdenv.shell} build ''; installPhase = '' diff --git a/pkgs/applications/misc/electron-cash/default.nix b/pkgs/applications/misc/electron-cash/default.nix index 9607f428ab9..913afd766d3 100644 --- a/pkgs/applications/misc/electron-cash/default.nix +++ b/pkgs/applications/misc/electron-cash/default.nix @@ -2,13 +2,13 @@ python3Packages.buildPythonApplication rec { pname = "electron-cash"; - version = "4.0.7"; + version = "4.0.10"; src = fetchurl { url = "https://electroncash.org/downloads/${version}/win-linux/Electron-Cash-${version}.tar.gz"; # Verified using official SHA-1 and signature from # https://github.com/fyookball/keys-n-hashes - sha256 = "d63ef2d52cff0b821b745067d752fd0c7f2902fa23eaf8e9392c54864cae5c77"; + sha256 = "48270e12956a2f4ef4d2b0cb60611e47f136b734a3741dab176542a32ae59ee5"; }; propagatedBuildInputs = with python3Packages; [ diff --git a/pkgs/applications/misc/gnome-multi-writer/default.nix b/pkgs/applications/misc/gnome-multi-writer/default.nix new file mode 100644 index 00000000000..11bfbaaacd0 --- /dev/null +++ b/pkgs/applications/misc/gnome-multi-writer/default.nix @@ -0,0 +1,62 @@ +{ stdenv +, fetchurl +, appstream-glib +, desktop-file-utils +, gettext +, glib +, gnome3 +, gtk3 +, gusb +, libcanberra-gtk3 +, libgudev +, meson +, ninja +, pkgconfig +, wrapGAppsHook +, polkit +, udisks +}: + +stdenv.mkDerivation rec { + pname = "gnome-multi-writer"; + version = "3.32.1"; + + src = fetchurl { + url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz"; + sha256 = "1apdd8yi12zagf82k376a9wmdm27wzwdxpm2wf2pnwkaf786rmdw"; + }; + + nativeBuildInputs = [ + appstream-glib + desktop-file-utils + gettext + meson + ninja + pkgconfig + wrapGAppsHook + ]; + + buildInputs = [ + glib + gtk3 + gusb + libcanberra-gtk3 + libgudev + polkit + udisks + ]; + + passthru = { + updateScript = gnome3.updateScript { + packageName = pname; + }; + }; + + meta = with stdenv.lib; { + description = "Tool for writing an ISO file to multiple USB devices at once"; + homepage = https://wiki.gnome.org/Apps/MultiWriter; + license = licenses.gpl2Plus; + maintainers = gnome3.maintainers; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/misc/k2pdfopt/default.nix b/pkgs/applications/misc/k2pdfopt/default.nix index 9391fe88c5e..a2eba8e08c2 100644 --- a/pkgs/applications/misc/k2pdfopt/default.nix +++ b/pkgs/applications/misc/k2pdfopt/default.nix @@ -30,73 +30,25 @@ stdenv.mkDerivation rec { cp -r ${v251a_src}/* $sourceRoot ''; - patches = [ ./k2pdfopt.patch ]; + patches = [ ./k2pdfopt.patch ./k2pdfopt-mupdf-1.16.1.patch ]; nativeBuildInputs = [ cmake pkgconfig ]; buildInputs = let + # The patches below were constructed by taking the files from k2pdfopt in + # the {mupdf,leptonica,tesseract}_mod/ directories, replacing the + # corresponding files in the respective source trees, resolving any errors + # with more recent versions of these depencencies, and running diff. mupdf_modded = mupdf.overrideAttrs (attrs: { - # Excluded the pdf-*.c files, since they mostly just broke the #includes - prePatch = '' - cp ${src}/mupdf_mod/{font,stext-device,string}.c source/fitz/ - cp ${src}/mupdf_mod/font-win32.c source/pdf/ - ''; + patches = attrs.patches ++ [ ./mupdf.patch ]; # Last verified with mupdf 1.16.1 }); - leptonica_modded = leptonica.overrideAttrs (attrs: { - name = "leptonica-1.74.4"; - # Modified source files apply to this particular version of leptonica - version = "1.74.4"; - - src = fetchurl { - url = "http://www.leptonica.org/source/leptonica-1.74.4.tar.gz"; - sha256 = "0fw39amgyv8v6nc7x8a4c7i37dm04i6c5zn62d24bgqnlhk59hr9"; - }; - - prePatch = '' - cp ${src}/leptonica_mod/{allheaders.h,dewarp2.c,leptwin.c} src/ - ''; - patches = [ - # stripped down copy of upstream commit b88c821f8d347bce0aea86d606c710303919f3d2 - ./leptonica-CVE-2018-3836.patch - (fetchpatch { - # CVE-2018-7186 - url = "https://github.com/DanBloomberg/leptonica/commit/" - + "ee301cb2029db8a6289c5295daa42bba7715e99a.patch"; - sha256 = "0cgb7mvz2px1rg5i80wk1wxxjvzjga617d8q6j7qygkp7jm6495d"; - }) - (fetchpatch { - # CVE-2018-7247 - url = "https://github.com/DanBloomberg/leptonica/commit/" - + "c1079bb8e77cdd426759e466729917ca37a3ed9f.patch"; - sha256 = "1z4iac5gwqggh7aa8cvyp6nl9fwd1v7wif26caxc9y5qr3jj34qf"; - }) - (fetchpatch { - # CVE-2018-7440 - url = "https://github.com/DanBloomberg/leptonica/commit/" - + "49ecb6c2dfd6ed5078c62f4a8eeff03e3beced3b.patch"; - sha256 = "1hjmva98iaw9xj7prg7aimykyayikcwnk4hk0380007hqb35lqmy"; - }) - ]; + patches = [ ./leptonica.patch ]; # Last verified with leptonica 1.78.0 }); tesseract_modded = tesseract4.override { tesseractBase = tesseract4.tesseractBase.overrideAttrs (_: { - prePatch = '' - cp ${src}/tesseract_mod/baseapi.{h,cpp} src/api/ - cp ${src}/tesseract_mod/ccutil.{h,cpp} src/ccutil/ - cp ${src}/tesseract_mod/genericvector.h src/ccutil/ - cp ${src}/tesseract_mod/input.cpp src/lstm/ - cp ${src}/tesseract_mod/lstmrecognizer.cpp src/lstm/ - cp ${src}/tesseract_mod/mainblk.cpp src/ccutil/ - cp ${src}/tesseract_mod/params.cpp src/ccutil/ - cp ${src}/tesseract_mod/serialis.{h,cpp} src/ccutil/ - cp ${src}/tesseract_mod/tesscapi.cpp src/api/ - cp ${src}/tesseract_mod/tessdatamanager.cpp src/ccstruct/ - cp ${src}/tesseract_mod/tessedit.cpp src/ccmain/ - cp ${src}/include_mod/{tesseract.h,leptonica.h} src/api/ - ''; - patches = [ ./tesseract.patch ]; + patches = [ ./tesseract.patch ]; # Last verified with tesseract 1.4 }); }; in diff --git a/pkgs/applications/misc/k2pdfopt/k2pdfopt-mupdf-1.16.1.patch b/pkgs/applications/misc/k2pdfopt/k2pdfopt-mupdf-1.16.1.patch new file mode 100644 index 00000000000..3a9eca30e75 --- /dev/null +++ b/pkgs/applications/misc/k2pdfopt/k2pdfopt-mupdf-1.16.1.patch @@ -0,0 +1,151 @@ +diff --git a/willuslib/wmupdf.c b/willuslib/wmupdf.c +index 81627ef..f14a96c 100644 +--- a/willuslib/wmupdf.c ++++ b/willuslib/wmupdf.c +@@ -189,8 +189,6 @@ int wmupdf_remake_pdf(char *infile,char *outfile,WPDFPAGEINFO *pageinfo,int use_ + pdf_write_opts.do_compress=1; + pdf_write_opts.do_linear=0; + pdf_write_opts.do_garbage=1; /* 2 and 3 don't work for this. */ +- pdf_write_opts.continue_on_error=0; +- pdf_write_opts.errors=NULL; + write_failed=0; + wpdfpageinfo_sort(pageinfo); + xref=NULL; +@@ -1687,8 +1685,8 @@ WPDFOUTLINE *wpdfoutline_read_from_pdf_file(char *filename) + /* Sumatra version of MuPDF v1.4 -- use locally installed fonts */ + pdf_install_load_system_font_funcs(ctx); + fz_try(ctx) { doc=fz_open_document(ctx,filename); } +- fz_catch(ctx) +- { ++ fz_catch(ctx) ++ { + fz_drop_context(ctx); + return(NULL); + } +@@ -1890,5 +1888,5 @@ static pdf_obj *pdf_new_string_utf8(fz_context *ctx,char *string) + willus_mem_free((double **)&utfbuf,funcname); + return(pdfobj); + } +- ++ + #endif /* HAVE_MUPDF_LIB */ +diff --git a/willuslib/wmupdfinfo.c b/willuslib/wmupdfinfo.c +index 5c7f38c..9b9e6fd 100644 +--- a/willuslib/wmupdfinfo.c ++++ b/willuslib/wmupdfinfo.c +@@ -237,23 +237,22 @@ static void showglobalinfo(fz_context *ctx, globals *glo,char *filename) + pdf_obj *robj; + + robj=pdf_resolve_indirect(ctx,obj); +- n=pdf_sprint_obj(ctx,NULL,0,robj,1); +- buf=malloc(n+2); ++ buf=pdf_sprint_obj(ctx,NULL,0,&n,robj,1,0); + if (buf==NULL) + { + fz_write_printf(ctx,out,"Info object (%d %d R):\n",pdf_to_num(ctx,obj),pdf_to_gen(ctx,obj)); +- pdf_print_obj(ctx,out,robj,1); ++ pdf_print_obj(ctx,out,robj,1,0); + } + else + { +- pdf_sprint_obj(ctx,buf,n+2,robj,1); ++ pdf_sprint_obj(ctx,buf,n+2,&n,robj,1,0); + display_pdf_field(ctx,out,buf,"Title","TITLE"); + display_pdf_field(ctx,out,buf,"CreationDate","CREATED"); + display_pdf_field(ctx,out,buf,"ModDate","LAST MODIFIED"); + display_pdf_field(ctx,out,buf,"Producer","PDF PRODUCER"); + display_pdf_field(ctx,out,buf,"Creator","CREATOR"); + display_file_size(ctx,out,filename); +- free(buf); ++ fz_free(ctx,buf); + } + } + if (glo->dims==1) +@@ -275,7 +274,7 @@ static void showglobalinfo(fz_context *ctx, globals *glo,char *filename) + if (obj) + { + fz_write_printf(ctx,out, "\nEncryption object (%d %d R):\n", pdf_to_num(ctx,obj), pdf_to_gen(ctx,obj)); +- pdf_print_obj(ctx,out, pdf_resolve_indirect(ctx,obj), 1); ++ pdf_print_obj(ctx,out, pdf_resolve_indirect(ctx,obj), 1, 0); + } + } + +@@ -396,7 +395,7 @@ gatherdimensions(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_ + if (j < glo->dims) + return; + +- glo->dim = fz_resize_array(ctx, glo->dim, glo->dims+1, sizeof(struct info)); ++ glo->dim = fz_realloc_array(ctx, glo->dim, glo->dims+1, struct info); + glo->dims++; + + glo->dim[glo->dims - 1].page = page; +@@ -441,7 +440,7 @@ gatherfonts(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj * + if (k < glo->fonts) + continue; + +- glo->font = fz_resize_array(ctx, glo->font, glo->fonts+1, sizeof(struct info)); ++ glo->font = fz_realloc_array(ctx, glo->font, glo->fonts+1, struct info); + glo->fonts++; + + glo->font[glo->fonts - 1].page = page; +@@ -510,7 +509,7 @@ gatherimages(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj + if (k < glo->images) + continue; + +- glo->image = fz_resize_array(ctx, glo->image, glo->images+1, sizeof(struct info)); ++ glo->image = fz_realloc_array(ctx, glo->image, glo->images+1, struct info); + glo->images++; + + glo->image[glo->images - 1].page = page; +@@ -568,7 +567,7 @@ gatherforms(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj * + if (k < glo->forms) + continue; + +- glo->form = fz_resize_array(ctx, glo->form, glo->forms+1, sizeof(struct info)); ++ glo->form = fz_realloc_array(ctx, glo->form, glo->forms+1, struct info); + glo->forms++; + + glo->form[glo->forms - 1].page = page; +@@ -613,7 +612,7 @@ gatherpsobjs(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_obj + if (k < glo->psobjs) + continue; + +- glo->psobj = fz_resize_array(ctx, glo->psobj, glo->psobjs+1, sizeof(struct info)); ++ glo->psobj = fz_realloc_array(ctx, glo->psobj, glo->psobjs+1, struct info); + glo->psobjs++; + + glo->psobj[glo->psobjs - 1].page = page; +@@ -656,7 +655,7 @@ gathershadings(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_ob + if (k < glo->shadings) + continue; + +- glo->shading = fz_resize_array(ctx, glo->shading, glo->shadings+1, sizeof(struct info)); ++ glo->shading = fz_realloc_array(ctx, glo->shading, glo->shadings+1, struct info); + glo->shadings++; + + glo->shading[glo->shadings - 1].page = page; +@@ -724,7 +723,7 @@ gatherpatterns(fz_context *ctx, globals *glo, int page, pdf_obj *pageref, pdf_ob + if (k < glo->patterns) + continue; + +- glo->pattern = fz_resize_array(ctx, glo->pattern, glo->patterns+1, sizeof(struct info)); ++ glo->pattern = fz_realloc_array(ctx, glo->pattern, glo->patterns+1, struct info); + glo->patterns++; + + glo->pattern[glo->patterns - 1].page = page; +@@ -1216,7 +1215,7 @@ void wmupdfinfo_get(char *filename,int *pagelist,char **buf) + if (fout==NULL) + return; + */ +- ++ + ctx = fz_new_context(NULL, NULL, FZ_STORE_UNLIMITED); + if (!ctx) + { +@@ -1307,5 +1306,5 @@ static void date_convert(char *dst,char *src) + else if (src[i]!='\0') + sprintf(&dst[strlen(dst)]," %s",&src[i]); + } +- ++ + #endif /* HAVE_MUPDF_LIB */ diff --git a/pkgs/applications/misc/k2pdfopt/leptonica-CVE-2018-3836.patch b/pkgs/applications/misc/k2pdfopt/leptonica-CVE-2018-3836.patch deleted file mode 100644 index f1b4170fbaa..00000000000 --- a/pkgs/applications/misc/k2pdfopt/leptonica-CVE-2018-3836.patch +++ /dev/null @@ -1,95 +0,0 @@ ---- a/src/allheaders.h -+++ b/src/allheaders.h -@@ -2600,6 +2600,7 @@ - LEPT_DLL extern char * stringReverse ( const char *src ); - LEPT_DLL extern char * strtokSafe ( char *cstr, const char *seps, char **psaveptr ); - LEPT_DLL extern l_int32 stringSplitOnToken ( char *cstr, const char *seps, char **phead, char **ptail ); -+LEPT_DLL extern l_int32 stringCheckForChars ( const char *src, const char *chars, l_int32 *pfound ); - LEPT_DLL extern char * stringRemoveChars ( const char *src, const char *remchars ); - LEPT_DLL extern l_int32 stringFindSubstr ( const char *src, const char *sub, l_int32 *ploc ); - LEPT_DLL extern char * stringReplaceSubstr ( const char *src, const char *sub1, const char *sub2, l_int32 *pfound, l_int32 *ploc ); ---- a/src/gplot.c -+++ b/src/gplot.c -@@ -141,9 +141,10 @@ - const char *xlabel, - const char *ylabel) - { --char *newroot; --char buf[L_BUF_SIZE]; --GPLOT *gplot; -+char *newroot; -+char buf[L_BUF_SIZE]; -+l_int32 badchar; -+GPLOT *gplot; - - PROCNAME("gplotCreate"); - -@@ -152,6 +153,9 @@ - if (outformat != GPLOT_PNG && outformat != GPLOT_PS && - outformat != GPLOT_EPS && outformat != GPLOT_LATEX) - return (GPLOT *)ERROR_PTR("outformat invalid", procName, NULL); -+ stringCheckForChars(rootname, "`;&|><\"?*", &badchar); -+ if (badchar) /* danger of command injection */ -+ return (GPLOT *)ERROR_PTR("invalid rootname", procName, NULL); - - if ((gplot = (GPLOT *)LEPT_CALLOC(1, sizeof(GPLOT))) == NULL) - return (GPLOT *)ERROR_PTR("gplot not made", procName, NULL); ---- a/src/utils2.c -+++ b/src/utils2.c -@@ -42,6 +42,7 @@ - * l_int32 stringSplitOnToken() - * - * Find and replace string and array procs -+ * l_int32 stringCheckForChars() - * char *stringRemoveChars() - * l_int32 stringFindSubstr() - * char *stringReplaceSubstr() -@@ -701,6 +702,48 @@ - /*--------------------------------------------------------------------* - * Find and replace procs * - *--------------------------------------------------------------------*/ -+/*! -+ * \brief stringCheckForChars() -+ * -+ * \param[in] src input string; can be of zero length -+ * \param[in] chars string of chars to be searched for in %src -+ * \param[out] pfound 1 if any characters are found; 0 otherwise -+ * \return 0 if OK, 1 on error -+ * -+ * <pre> -+ * Notes: -+ * (1) This can be used to sanitize an operation by checking for -+ * special characters that don't belong in a string. -+ * </pre> -+ */ -+l_int32 -+stringCheckForChars(const char *src, -+ const char *chars, -+ l_int32 *pfound) -+{ -+char ch; -+l_int32 i, n; -+ -+ PROCNAME("stringCheckForChars"); -+ -+ if (!pfound) -+ return ERROR_INT("&found not defined", procName, 1); -+ *pfound = FALSE; -+ if (!src || !chars) -+ return ERROR_INT("src and chars not both defined", procName, 1); -+ -+ n = strlen(src); -+ for (i = 0; i < n; i++) { -+ ch = src[i]; -+ if (strchr(chars, ch)) { -+ *pfound = TRUE; -+ break; -+ } -+ } -+ return 0; -+} -+ -+ - /*! - * \brief stringRemoveChars() - * diff --git a/pkgs/applications/misc/k2pdfopt/leptonica.patch b/pkgs/applications/misc/k2pdfopt/leptonica.patch new file mode 100644 index 00000000000..dfab99fd013 --- /dev/null +++ b/pkgs/applications/misc/k2pdfopt/leptonica.patch @@ -0,0 +1,254 @@ +From 8c11a20925686855023df90ed477957c7d7fe91e Mon Sep 17 00:00:00 2001 +From: Daniel Fullmer <danielrf12@gmail.com> +Date: Fri, 13 Sep 2019 15:54:21 -0400 +Subject: [PATCH] Willus mod for k2pdfopt + +--- + src/allheaders.h | 4 ++ + src/dewarp2.c | 106 ++++++++++++++++++++++++++++++++++++++++++----- + src/leptwin.c | 6 ++- + 3 files changed, 104 insertions(+), 12 deletions(-) + +diff --git a/src/allheaders.h b/src/allheaders.h +index e68eff1..b3cc729 100644 +--- a/src/allheaders.h ++++ b/src/allheaders.h +@@ -669,6 +669,10 @@ LEPT_DLL extern L_DEWARPA * dewarpaReadMem ( const l_uint8 *data, size_t size ); + LEPT_DLL extern l_ok dewarpaWrite ( const char *filename, L_DEWARPA *dewa ); + LEPT_DLL extern l_ok dewarpaWriteStream ( FILE *fp, L_DEWARPA *dewa ); + LEPT_DLL extern l_ok dewarpaWriteMem ( l_uint8 **pdata, size_t *psize, L_DEWARPA *dewa ); ++/* WILLUS MOD */ ++ LEPT_DLL extern l_int32 dewarpBuildPageModel_ex ( L_DEWARP *dew, const char *debugfile,l_int32 fit_order ); ++ LEPT_DLL extern l_int32 dewarpFindVertDisparity_ex ( L_DEWARP *dew, PTAA *ptaa, l_int32 rotflag,l_int32 fit_order ); ++ LEPT_DLL extern l_int32 dewarpBuildLineModel_ex ( L_DEWARP *dew, l_int32 opensize, const char *debugfile,l_int32 fit_order ); + LEPT_DLL extern l_ok dewarpBuildPageModel ( L_DEWARP *dew, const char *debugfile ); + LEPT_DLL extern l_ok dewarpFindVertDisparity ( L_DEWARP *dew, PTAA *ptaa, l_int32 rotflag ); + LEPT_DLL extern l_ok dewarpFindHorizDisparity ( L_DEWARP *dew, PTAA *ptaa ); +diff --git a/src/dewarp2.c b/src/dewarp2.c +index 220eec1..2e29500 100644 +--- a/src/dewarp2.c ++++ b/src/dewarp2.c +@@ -144,9 +144,17 @@ static const l_float32 L_ALLOWED_W_FRACT = 0.05; /* no bigger */ + * longest textlines. + * </pre> + */ ++/* WILLUS MOD */ + l_ok +-dewarpBuildPageModel(L_DEWARP *dew, +- const char *debugfile) ++dewarpBuildPageModel(L_DEWARP *dew,const char *debugfile) ++{ ++return(dewarpBuildPageModel_ex(dew,debugfile,2)); ++} ++ ++l_ok ++dewarpBuildPageModel_ex(L_DEWARP *dew, ++ const char *debugfile, ++ l_int32 fit_order) + { + l_int32 linecount, topline, botline, ret; + PIX *pixs, *pix1, *pix2, *pix3; +@@ -225,7 +233,7 @@ PTAA *ptaa1, *ptaa2; + /* Get the sampled vertical disparity from the textline centers. + * The disparity array will push pixels vertically so that each + * textline is flat and centered at the y-position of the mid-point. */ +- if (dewarpFindVertDisparity(dew, ptaa2, 0) != 0) { ++ if (dewarpFindVertDisparity_ex(dew, ptaa2, 0, fit_order) != 0) { + L_WARNING("vertical disparity not built\n", procName); + ptaaDestroy(&ptaa2); + return 1; +@@ -290,13 +298,24 @@ PTAA *ptaa1, *ptaa2; + * a pdf. Non-pix debug output goes to /tmp. + * </pre> + */ ++/* WILLUS MOD */ + l_ok + dewarpFindVertDisparity(L_DEWARP *dew, + PTAA *ptaa, + l_int32 rotflag) + { ++return(dewarpFindVertDisparity_ex(dew,ptaa,rotflag,2)); ++} ++/* WILLUS MOD -- add cubic and quartic fits and ..._ex functions */ ++l_int32 ++dewarpFindVertDisparity_ex(L_DEWARP *dew, ++ PTAA *ptaa, ++ l_int32 rotflag, ++ l_int32 fit_order) ++{ + l_int32 i, j, nlines, npts, nx, ny, sampling; +-l_float32 c0, c1, c2, x, y, midy, val, medval, meddev, minval, maxval; ++/* WILLUS MOD */ ++l_float32 c0, c1, c2, c3, c4, x, y, midy, val, medval, meddev, minval, maxval; + l_float32 *famidys; + NUMA *nax, *nafit, *nacurve0, *nacurve1, *nacurves; + NUMA *namidy, *namidys, *namidysi; +@@ -304,11 +323,22 @@ PIX *pix1, *pix2, *pixcirc, *pixdb; + PTA *pta, *ptad, *ptacirc; + PTAA *ptaa0, *ptaa1, *ptaa2, *ptaa3, *ptaa4, *ptaa5, *ptaat; + FPIX *fpix; ++/* WILLUS MOD */ ++l_int32 fit_order1,fit_order2; + + PROCNAME("dewarpFindVertDisparity"); + + if (!dew) + return ERROR_INT("dew not defined", procName, 1); ++/* WILLUS MOD */ ++ if (fit_order < 10) ++ fit_order1 = fit_order2 = fit_order; ++ else ++ { ++ fit_order1=fit_order % 10; ++ fit_order2=fit_order / 10; ++ fit_order2=fit_order2 % 10; ++ } + dew->vsuccess = 0; + if (!ptaa) + return ERROR_INT("ptaa not defined", procName, 1); +@@ -331,12 +361,32 @@ FPIX *fpix; + pixdb = (rotflag) ? pixRotateOrth(dew->pixs, 1) : pixClone(dew->pixs); + for (i = 0; i < nlines; i++) { /* for each line */ + pta = ptaaGetPta(ptaa, i, L_CLONE); +- ptaGetQuadraticLSF(pta, &c2, &c1, &c0, NULL); +- numaAddNumber(nacurve0, c2); ++/* WILLUS MOD */ ++if (fit_order1>3) ++ { ++ ptaGetQuarticLSF(pta, &c4, &c3, &c2, &c1, &c0, NULL); ++ numaAddNumber(nacurve0, c4); ++ } ++else if (fit_order1==3) ++ { ++ ptaGetCubicLSF(pta, &c3, &c2, &c1, &c0, NULL); ++ numaAddNumber(nacurve0, c3); ++ } ++else ++ { ++ ptaGetQuadraticLSF(pta, &c2, &c1, &c0, NULL); ++ numaAddNumber(nacurve0, c2); ++ } + ptad = ptaCreate(nx); + for (j = 0; j < nx; j++) { /* uniformly sampled in x */ + x = j * sampling; +- applyQuadraticFit(c2, c1, c0, x, &y); ++/* WILLUS MOD */ ++if (fit_order1>3) ++ applyQuarticFit(c4, c3, c2, c1, c0, x, &y); ++else if (fit_order1==3) ++ applyCubicFit(c3, c2, c1, c0, x, &y); ++else ++ applyQuadraticFit(c2, c1, c0, x, &y); + ptaAddPt(ptad, x, y); + } + ptaaAddPta(ptaa0, ptad, L_INSERT); +@@ -350,7 +400,13 @@ FPIX *fpix; + for (i = 0; i < nlines; i++) { + pta = ptaaGetPta(ptaa, i, L_CLONE); + ptaGetArrays(pta, &nax, NULL); +- ptaGetQuadraticLSF(pta, NULL, NULL, NULL, &nafit); ++/* WILLUS MOD */ ++if (fit_order1>3) ++ptaGetQuarticLSF(pta, NULL, NULL, NULL, NULL, NULL, &nafit); ++else if (fit_order1==3) ++ptaGetCubicLSF(pta, NULL, NULL, NULL, NULL, &nafit); ++else ++ptaGetQuadraticLSF(pta, NULL, NULL, NULL, &nafit); + ptad = ptaCreateFromNuma(nax, nafit); + ptaaAddPta(ptaat, ptad, L_INSERT); + ptaDestroy(&pta); +@@ -494,11 +550,24 @@ FPIX *fpix; + ptaa5 = ptaaCreate(nx); /* uniformly sampled across full height of image */ + for (j = 0; j < nx; j++) { /* for each column */ + pta = ptaaGetPta(ptaa4, j, L_CLONE); +- ptaGetQuadraticLSF(pta, &c2, &c1, &c0, NULL); ++/* WILLUS MOD */ ++/* Order higher than 2 can cause a little craziness here. */ ++if (fit_order2>3) ++ ptaGetQuarticLSF(pta, &c4, &c3, &c2, &c1, &c0, NULL); ++else if (fit_order2==3) ++ ptaGetCubicLSF(pta, &c3, &c2, &c1, &c0, NULL); ++else ++ ptaGetQuadraticLSF(pta, &c2, &c1, &c0, NULL); + ptad = ptaCreate(ny); + for (i = 0; i < ny; i++) { /* uniformly sampled in y */ + y = i * sampling; +- applyQuadraticFit(c2, c1, c0, y, &val); ++/* WILLUS MOD */ ++if (fit_order2>3) ++ applyQuarticFit(c4, c3, c2, c1, c0, y, &val); ++else if (fit_order2==3) ++ applyCubicFit(c3, c2, c1, c0, y, &val); ++else ++ applyQuadraticFit(c2, c1, c0, y, &val); + ptaAddPt(ptad, y, val); + } + ptaaAddPta(ptaa5, ptad, L_INSERT); +@@ -1602,11 +1671,21 @@ FPIX *fpix; + * See notes there. + * </pre> + */ ++/* WILLUS MOD */ + l_ok + dewarpBuildLineModel(L_DEWARP *dew, + l_int32 opensize, + const char *debugfile) + { ++return(dewarpBuildLineModel_ex(dew,opensize,debugfile,2)); ++} ++ ++l_int32 ++dewarpBuildLineModel_ex(L_DEWARP *dew, ++ l_int32 opensize, ++ const char *debugfile, ++ l_int32 fit_order) ++{ + char buf[64]; + l_int32 i, j, bx, by, ret, nlines; + BOXA *boxa; +@@ -1695,6 +1774,8 @@ PTAA *ptaa1, *ptaa2; + + /* Remove all lines that are not at least 0.75 times the length + * of the longest line. */ ++/* WILLUS MOD */ ++/* + ptaa2 = dewarpRemoveShortLines(pix, ptaa1, 0.75, DEBUG_SHORT_LINES); + if (debugfile) { + pix1 = pixConvertTo32(pix); +@@ -1704,6 +1785,8 @@ PTAA *ptaa1, *ptaa2; + pixDestroy(&pix1); + pixDestroy(&pix2); + } ++*/ ++ptaa2=ptaa1; + ptaaDestroy(&ptaa1); + nlines = ptaaGetCount(ptaa2); + if (nlines < dew->minlines) { +@@ -1717,7 +1800,8 @@ PTAA *ptaa1, *ptaa2; + * centers. The disparity array will push pixels vertically + * so that each line is flat and centered at the y-position + * of the mid-point. */ +- ret = dewarpFindVertDisparity(dew, ptaa2, 1 - i); ++/* WILLUS MOD */ ++ ret = dewarpFindVertDisparity_ex(dew, ptaa2, 1 - i, fit_order); + + /* If i == 0, move the result to the horizontal disparity, + * rotating it back by -90 degrees. */ +diff --git a/src/leptwin.c b/src/leptwin.c +index 72643a0..573d33e 100644 +--- a/src/leptwin.c ++++ b/src/leptwin.c +@@ -364,5 +364,9 @@ PIXCMAP *cmap; + + return hBitmap; + } +- ++#else ++/* willus mod: Avoid weird issue with OS/X library archiver when there are no symbols */ ++int leptwin_my_empty_func(void); ++int leptwin_my_empty_func(void) ++{return(0);} + #endif /* _WIN32 */ +-- +2.22.0 + diff --git a/pkgs/applications/misc/k2pdfopt/mupdf.patch b/pkgs/applications/misc/k2pdfopt/mupdf.patch new file mode 100644 index 00000000000..0c59a1d2016 --- /dev/null +++ b/pkgs/applications/misc/k2pdfopt/mupdf.patch @@ -0,0 +1,1060 @@ +From d8927c969e3387ca2669a616c0ba53bce918a031 Mon Sep 17 00:00:00 2001 +From: Daniel Fullmer <danielrf12@gmail.com> +Date: Fri, 13 Sep 2019 15:11:45 -0400 +Subject: [PATCH] Willus mod for k2pdfopt + +--- + source/fitz/filter-basic.c | 3 + + source/fitz/font-win32.c | 866 +++++++++++++++++++++++++++++++++++++ + source/fitz/font.c | 3 + + source/fitz/stext-device.c | 5 + + source/fitz/string.c | 5 + + source/pdf/pdf-annot.c | 14 +- + source/pdf/pdf-link.c | 3 + + source/pdf/pdf-parse.c | 5 + + source/pdf/pdf-xref.c | 9 + + 9 files changed, 912 insertions(+), 1 deletion(-) + create mode 100644 source/fitz/font-win32.c + +diff --git a/source/fitz/filter-basic.c b/source/fitz/filter-basic.c +index 0713a62e7..b8ef4d292 100644 +--- a/source/fitz/filter-basic.c ++++ b/source/fitz/filter-basic.c +@@ -259,7 +259,10 @@ look_for_endstream: + if (!state->warned) + { + state->warned = 1; ++/* willus mod -- no warning */ ++/* + fz_warn(ctx, "PDF stream Length incorrect"); ++*/ + } + return *stm->rp++; + } +diff --git a/source/fitz/font-win32.c b/source/fitz/font-win32.c +new file mode 100644 +index 000000000..45de8cfd3 +--- /dev/null ++++ b/source/fitz/font-win32.c +@@ -0,0 +1,866 @@ ++/* ++** Routines to access MS Windows system fonts. ++** From sumatra PDF distro. ++** Modified for MuPDF v1.9a by willus.com ++*/ ++#include "mupdf/pdf.h" ++ ++/* ++ Which fonts are embedded is based on a few preprocessor definitions. ++ ++ The base 14 fonts are always embedded. ++ For CJK font substitution we embed DroidSansFallback. ++ ++ Set NOCJK to skip all CJK support (this also omits embedding the CJK CMaps) ++ Set NOCJKFONT to skip the embedded CJK font. ++ Set NOCJKFULL to embed a smaller CJK font without CJK Extension A support. ++*/ ++ ++#ifdef NOCJK ++#define NOCJKFONT ++#endif ++ ++/* SumatraPDF: also load fonts included with Windows */ ++#ifdef _WIN32 ++ ++#ifndef UNICODE ++#define UNICODE ++#endif ++#ifndef _UNICODE ++#define _UNICODE ++#endif ++ ++#include <windows.h> ++ ++// TODO: Use more of FreeType for TTF parsing (for performance reasons, ++// the fonts can't be parsed completely, though) ++#include <ft2build.h> ++#include FT_TRUETYPE_IDS_H ++#include FT_TRUETYPE_TAGS_H ++ ++#define TTC_VERSION1 0x00010000 ++#define TTC_VERSION2 0x00020000 ++ ++#define MAX_FACENAME 128 ++ ++// Note: the font face must be the first field so that the structure ++// can be treated like a simple string for searching ++typedef struct pdf_fontmapMS_s ++{ ++ char fontface[MAX_FACENAME]; ++ char fontpath[MAX_PATH]; ++ int index; ++} pdf_fontmapMS; ++ ++typedef struct pdf_fontlistMS_s ++{ ++ pdf_fontmapMS *fontmap; ++ int len; ++ int cap; ++} pdf_fontlistMS; ++ ++typedef struct _tagTT_OFFSET_TABLE ++{ ++ ULONG uVersion; ++ USHORT uNumOfTables; ++ USHORT uSearchRange; ++ USHORT uEntrySelector; ++ USHORT uRangeShift; ++} TT_OFFSET_TABLE; ++ ++typedef struct _tagTT_TABLE_DIRECTORY ++{ ++ ULONG uTag; //table name ++ ULONG uCheckSum; //Check sum ++ ULONG uOffset; //Offset from beginning of file ++ ULONG uLength; //length of the table in bytes ++} TT_TABLE_DIRECTORY; ++ ++typedef struct _tagTT_NAME_TABLE_HEADER ++{ ++ USHORT uFSelector; //format selector. Always 0 ++ USHORT uNRCount; //Name Records count ++ USHORT uStorageOffset; //Offset for strings storage, from start of the table ++} TT_NAME_TABLE_HEADER; ++ ++typedef struct _tagTT_NAME_RECORD ++{ ++ USHORT uPlatformID; ++ USHORT uEncodingID; ++ USHORT uLanguageID; ++ USHORT uNameID; ++ USHORT uStringLength; ++ USHORT uStringOffset; //from start of storage area ++} TT_NAME_RECORD; ++ ++typedef struct _tagFONT_COLLECTION ++{ ++ ULONG Tag; ++ ULONG Version; ++ ULONG NumFonts; ++} FONT_COLLECTION; ++ ++static struct { ++ char *name; ++ char *pattern; ++} baseSubstitutes[] = { ++ { "Courier", "CourierNewPSMT" }, ++ { "Courier-Bold", "CourierNewPS-BoldMT" }, ++ { "Courier-Oblique", "CourierNewPS-ItalicMT" }, ++ { "Courier-BoldOblique", "CourierNewPS-BoldItalicMT" }, ++ { "Helvetica", "ArialMT" }, ++ { "Helvetica-Bold", "Arial-BoldMT" }, ++ { "Helvetica-Oblique", "Arial-ItalicMT" }, ++ { "Helvetica-BoldOblique", "Arial-BoldItalicMT" }, ++ { "Times-Roman", "TimesNewRomanPSMT" }, ++ { "Times-Bold", "TimesNewRomanPS-BoldMT" }, ++ { "Times-Italic", "TimesNewRomanPS-ItalicMT" }, ++ { "Times-BoldItalic", "TimesNewRomanPS-BoldItalicMT" }, ++ { "Symbol", "SymbolMT" }, ++}; ++static const char *base_font_names[][10] = ++{ ++ { "Courier", "CourierNew", "CourierNewPSMT", NULL }, ++ { "Courier-Bold", "CourierNew,Bold", "Courier,Bold", ++ "CourierNewPS-BoldMT", "CourierNew-Bold", NULL }, ++ { "Courier-Oblique", "CourierNew,Italic", "Courier,Italic", ++ "CourierNewPS-ItalicMT", "CourierNew-Italic", NULL }, ++ { "Courier-BoldOblique", "CourierNew,BoldItalic", "Courier,BoldItalic", ++ "CourierNewPS-BoldItalicMT", "CourierNew-BoldItalic", NULL }, ++ { "Helvetica", "ArialMT", "Arial", NULL }, ++ { "Helvetica-Bold", "Arial-BoldMT", "Arial,Bold", "Arial-Bold", ++ "Helvetica,Bold", NULL }, ++ { "Helvetica-Oblique", "Arial-ItalicMT", "Arial,Italic", "Arial-Italic", ++ "Helvetica,Italic", "Helvetica-Italic", NULL }, ++ { "Helvetica-BoldOblique", "Arial-BoldItalicMT", ++ "Arial,BoldItalic", "Arial-BoldItalic", ++ "Helvetica,BoldItalic", "Helvetica-BoldItalic", NULL }, ++ { "Times-Roman", "TimesNewRomanPSMT", "TimesNewRoman", ++ "TimesNewRomanPS", NULL }, ++ { "Times-Bold", "TimesNewRomanPS-BoldMT", "TimesNewRoman,Bold", ++ "TimesNewRomanPS-Bold", "TimesNewRoman-Bold", NULL }, ++ { "Times-Italic", "TimesNewRomanPS-ItalicMT", "TimesNewRoman,Italic", ++ "TimesNewRomanPS-Italic", "TimesNewRoman-Italic", NULL }, ++ { "Times-BoldItalic", "TimesNewRomanPS-BoldItalicMT", ++ "TimesNewRoman,BoldItalic", "TimesNewRomanPS-BoldItalic", ++ "TimesNewRoman-BoldItalic", NULL }, ++ { "Symbol", "Symbol,Italic", "Symbol,Bold", "Symbol,BoldItalic", ++ "SymbolMT", "SymbolMT,Italic", "SymbolMT,Bold", "SymbolMT,BoldItalic", NULL }, ++ { "ZapfDingbats", NULL } ++}; ++ ++static pdf_fontlistMS fontlistMS = ++{ ++ NULL, ++ 0, ++ 0, ++}; ++static int strcmp_ignore_space(const char *a, const char *b); ++static const char *clean_font_name(const char *fontname); ++static const char *pdf_clean_base14_name(const char *fontname); ++ ++static inline USHORT BEtoHs(USHORT x) ++{ ++ BYTE *data = (BYTE *)&x; ++ return (data[0] << 8) | data[1]; ++} ++ ++static inline ULONG BEtoHl(ULONG x) ++{ ++ BYTE *data = (BYTE *)&x; ++ return (data[0] << 24) | (data[1] << 16) | (data[2] << 8) | data[3]; ++} ++ ++static int strcmp_ignore_space(const char *a, const char *b) ++{ ++ while (1) ++ { ++ while (*a == ' ') ++ a++; ++ while (*b == ' ') ++ b++; ++ if (*a != *b) ++ return 1; ++ if (*a == 0) ++ return *a != *b; ++ if (*b == 0) ++ return *a != *b; ++ a++; ++ b++; ++ } ++} ++ ++/* A little bit more sophisticated name matching so that e.g. "EurostileExtended" ++ matches "EurostileExtended-Roman" or "Tahoma-Bold,Bold" matches "Tahoma-Bold" */ ++static int ++lookup_compare(const void *elem1, const void *elem2) ++{ ++ const char *val1 = elem1; ++ const char *val2 = elem2; ++ int len1 = strlen(val1); ++ int len2 = strlen(val2); ++ ++ if (len1 != len2) ++ { ++ const char *rest = len1 > len2 ? val1 + len2 : val2 + len1; ++ if (',' == *rest || !_stricmp(rest, "-roman")) ++ return _strnicmp(val1, val2, fz_mini(len1, len2)); ++ } ++ ++ return _stricmp(val1, val2); ++} ++ ++static void ++remove_spaces(char *srcDest) ++{ ++ char *dest; ++ ++ for (dest = srcDest; *srcDest; srcDest++) ++ if (*srcDest != ' ') ++ *dest++ = *srcDest; ++ *dest = '\0'; ++} ++ ++static int ++str_ends_with(const char *str, const char *end) ++{ ++ size_t len1 = strlen(str); ++ size_t len2 = strlen(end); ++ ++ return len1 >= len2 && !strcmp(str + len1 - len2, end); ++} ++ ++static pdf_fontmapMS * ++pdf_find_windows_font_path(const char *fontname) ++{ ++ return bsearch(fontname, fontlistMS.fontmap, fontlistMS.len, sizeof(pdf_fontmapMS), lookup_compare); ++} ++ ++/* source and dest can be same */ ++static void ++decode_unicode_BE(fz_context *ctx, char *source, int sourcelen, char *dest, int destlen) ++{ ++ WCHAR *tmp; ++ int converted, i; ++ ++ if (sourcelen % 2 != 0) ++ fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : invalid unicode string"); ++ ++ tmp = fz_malloc_array(ctx, sourcelen / 2 + 1, sizeof(WCHAR)); ++ for (i = 0; i < sourcelen / 2; i++) ++ tmp[i] = BEtoHs(((WCHAR *)source)[i]); ++ tmp[sourcelen / 2] = '\0'; ++ ++ converted = WideCharToMultiByte(CP_UTF8, 0, tmp, -1, dest, destlen, NULL, NULL); ++ fz_free(ctx, tmp); ++ if (!converted) ++ fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : invalid unicode string"); ++} ++ ++static void ++decode_platform_string(fz_context *ctx, int platform, int enctype, char *source, int sourcelen, char *dest, int destlen) ++{ ++ switch (platform) ++ { ++ case TT_PLATFORM_APPLE_UNICODE: ++ switch (enctype) ++ { ++ case TT_APPLE_ID_DEFAULT: ++ case TT_APPLE_ID_UNICODE_2_0: ++ decode_unicode_BE(ctx, source, sourcelen, dest, destlen); ++ return; ++ } ++ fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : unsupported encoding (%d/%d)", platform, enctype); ++ case TT_PLATFORM_MACINTOSH: ++ switch (enctype) ++ { ++ case TT_MAC_ID_ROMAN: ++ if (sourcelen + 1 > destlen) ++ fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : overlong fontname: %s", source); ++ // TODO: Convert to UTF-8 from what encoding? ++ memcpy(dest, source, sourcelen); ++ dest[sourcelen] = 0; ++ return; ++ } ++ fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : unsupported encoding (%d/%d)", platform, enctype); ++ case TT_PLATFORM_MICROSOFT: ++ switch (enctype) ++ { ++ case TT_MS_ID_SYMBOL_CS: ++ case TT_MS_ID_UNICODE_CS: ++ case TT_MS_ID_UCS_4: ++ decode_unicode_BE(ctx, source, sourcelen, dest, destlen); ++ return; ++ } ++ fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : unsupported encoding (%d/%d)", platform, enctype); ++ default: ++ fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : unsupported encoding (%d/%d)", platform, enctype); ++ } ++} ++ ++static void ++grow_system_font_list(fz_context *ctx, pdf_fontlistMS *fl) ++{ ++ int newcap; ++ pdf_fontmapMS *newitems; ++ ++ if (fl->cap == 0) ++ newcap = 1024; ++ else ++ newcap = fl->cap * 2; ++ ++ // use realloc/free for the fontmap, since the list can ++ // remain in memory even with all fz_contexts destroyed ++ newitems = realloc(fl->fontmap, newcap * sizeof(pdf_fontmapMS)); ++ if (!newitems) ++ fz_throw(ctx, FZ_ERROR_GENERIC, "OOM in grow_system_font_list"); ++ memset(newitems + fl->cap, 0, sizeof(pdf_fontmapMS) * (newcap - fl->cap)); ++ ++ fl->fontmap = newitems; ++ fl->cap = newcap; ++} ++ ++static void ++append_mapping(fz_context *ctx, pdf_fontlistMS *fl, const char *facename, const char *path, int index) ++{ ++ if (fl->len == fl->cap) ++ grow_system_font_list(ctx, fl); ++ ++ if (fl->len >= fl->cap) ++ fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : fontlist overflow"); ++ ++ fz_strlcpy(fl->fontmap[fl->len].fontface, facename, sizeof(fl->fontmap[0].fontface)); ++ fz_strlcpy(fl->fontmap[fl->len].fontpath, path, sizeof(fl->fontmap[0].fontpath)); ++ fl->fontmap[fl->len].index = index; ++ ++ ++fl->len; ++} ++ ++static void ++safe_read(fz_context *ctx, fz_stream *file, int offset, char *buf, int size) ++{ ++ int n; ++ fz_seek(ctx, file, offset, 0); ++ n = fz_read(ctx, file, (unsigned char *)buf, size); ++ if (n != size) ++ fz_throw(ctx, FZ_ERROR_GENERIC, "safe_read: read %d, expected %d", n, size); ++} ++ ++static void ++read_ttf_string(fz_context *ctx, fz_stream *file, int offset, TT_NAME_RECORD *ttRecordBE, char *buf, int size) ++{ ++ char szTemp[MAX_FACENAME * 2]; ++ // ignore empty and overlong strings ++ int stringLength = BEtoHs(ttRecordBE->uStringLength); ++ if (stringLength == 0 || stringLength >= sizeof(szTemp)) ++ return; ++ ++ safe_read(ctx, file, offset + BEtoHs(ttRecordBE->uStringOffset), szTemp, stringLength); ++ decode_platform_string(ctx, BEtoHs(ttRecordBE->uPlatformID), ++ BEtoHs(ttRecordBE->uEncodingID), szTemp, stringLength, buf, size); ++} ++ ++static void ++makeFakePSName(char szName[MAX_FACENAME], const char *szStyle) ++{ ++ // append the font's subfamily, unless it's a Regular font ++ if (*szStyle && _stricmp(szStyle, "Regular") != 0) ++ { ++ fz_strlcat(szName, "-", MAX_FACENAME); ++ fz_strlcat(szName, szStyle, MAX_FACENAME); ++ } ++ remove_spaces(szName); ++} ++ ++static void ++parseTTF(fz_context *ctx, fz_stream *file, int offset, int index, const char *path) ++{ ++ TT_OFFSET_TABLE ttOffsetTableBE; ++ TT_TABLE_DIRECTORY tblDirBE; ++ TT_NAME_TABLE_HEADER ttNTHeaderBE; ++ TT_NAME_RECORD ttRecordBE; ++ ++ char szPSName[MAX_FACENAME] = { 0 }; ++ char szTTName[MAX_FACENAME] = { 0 }; ++ char szStyle[MAX_FACENAME] = { 0 }; ++ char szCJKName[MAX_FACENAME] = { 0 }; ++ int i, count, tblOffset; ++ ++ safe_read(ctx, file, offset, (char *)&ttOffsetTableBE, sizeof(TT_OFFSET_TABLE)); ++ ++ // check if this is a TrueType font of version 1.0 or an OpenType font ++ if (BEtoHl(ttOffsetTableBE.uVersion) != TTC_VERSION1 && ++ BEtoHl(ttOffsetTableBE.uVersion) != TTAG_OTTO) ++ { ++ fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : invalid font version %x", (unsigned int)BEtoHl(ttOffsetTableBE.uVersion)); ++ } ++ ++ // determine the name table's offset by iterating through the offset table ++ count = BEtoHs(ttOffsetTableBE.uNumOfTables); ++ for (i = 0; i < count; i++) ++ { ++ int entryOffset = offset + sizeof(TT_OFFSET_TABLE) + i * sizeof(TT_TABLE_DIRECTORY); ++ safe_read(ctx, file, entryOffset, (char *)&tblDirBE, sizeof(TT_TABLE_DIRECTORY)); ++ if (!BEtoHl(tblDirBE.uTag) || BEtoHl(tblDirBE.uTag) == TTAG_name) ++ break; ++ } ++ if (count == i || !BEtoHl(tblDirBE.uTag)) ++ fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : nameless font"); ++ tblOffset = BEtoHl(tblDirBE.uOffset); ++ ++ // read the 'name' table for record count and offsets ++ safe_read(ctx, file, tblOffset, (char *)&ttNTHeaderBE, sizeof(TT_NAME_TABLE_HEADER)); ++ offset = tblOffset + sizeof(TT_NAME_TABLE_HEADER); ++ tblOffset += BEtoHs(ttNTHeaderBE.uStorageOffset); ++ ++ // read through the strings for PostScript name and font family ++ count = BEtoHs(ttNTHeaderBE.uNRCount); ++ for (i = 0; i < count; i++) ++ { ++ short langId, nameId; ++ BOOL isCJKName; ++ ++ safe_read(ctx, file, offset + i * sizeof(TT_NAME_RECORD), (char *)&ttRecordBE, sizeof(TT_NAME_RECORD)); ++ ++ langId = BEtoHs(ttRecordBE.uLanguageID); ++ nameId = BEtoHs(ttRecordBE.uNameID); ++ isCJKName = TT_NAME_ID_FONT_FAMILY == nameId && LANG_CHINESE == PRIMARYLANGID(langId); ++ ++ // ignore non-English strings (except for Chinese font names) ++ if (langId && langId != TT_MS_LANGID_ENGLISH_UNITED_STATES && !isCJKName) ++ continue; ++ // ignore names other than font (sub)family and PostScript name ++ fz_try(ctx) ++ { ++ if (isCJKName) ++ read_ttf_string(ctx, file, tblOffset, &ttRecordBE, szCJKName, sizeof(szCJKName)); ++ else if (TT_NAME_ID_FONT_FAMILY == nameId) ++ read_ttf_string(ctx, file, tblOffset, &ttRecordBE, szTTName, sizeof(szTTName)); ++ else if (TT_NAME_ID_FONT_SUBFAMILY == nameId) ++ read_ttf_string(ctx, file, tblOffset, &ttRecordBE, szStyle, sizeof(szStyle)); ++ else if (TT_NAME_ID_PS_NAME == nameId) ++ read_ttf_string(ctx, file, tblOffset, &ttRecordBE, szPSName, sizeof(szPSName)); ++ } ++ fz_catch(ctx) ++ { ++ fz_warn(ctx, "ignoring face name decoding fonterror"); ++ } ++ } ++ ++ // try to prevent non-Arial fonts from accidentally substituting Arial ++ if (!strcmp(szPSName, "ArialMT")) ++ { ++ // cf. https://code.google.com/p/sumatrapdf/issues/detail?id=2471 ++ if (strcmp(szTTName, "Arial") != 0) ++ szPSName[0] = '\0'; ++ // TODO: is there a better way to distinguish Arial Caps from Arial proper? ++ // cf. http://code.google.com/p/sumatrapdf/issues/detail?id=1290 ++ else if (strstr(path, "caps") || strstr(path, "Caps")) ++ fz_throw(ctx, FZ_ERROR_GENERIC, "ignore %s, as it can't be distinguished from Arial,Regular", path); ++ } ++ ++ if (szPSName[0]) ++ append_mapping(ctx, &fontlistMS, szPSName, path, index); ++ if (szTTName[0]) ++ { ++ // derive a PostScript-like name and add it, if it's different from the font's ++ // included PostScript name; cf. http://code.google.com/p/sumatrapdf/issues/detail?id=376 ++ makeFakePSName(szTTName, szStyle); ++ // compare the two names before adding this one ++ if (lookup_compare(szTTName, szPSName)) ++ append_mapping(ctx, &fontlistMS, szTTName, path, index); ++ } ++ if (szCJKName[0]) ++ { ++ makeFakePSName(szCJKName, szStyle); ++ if (lookup_compare(szCJKName, szPSName) && lookup_compare(szCJKName, szTTName)) ++ append_mapping(ctx, &fontlistMS, szCJKName, path, index); ++ } ++} ++ ++static void ++parseTTFs(fz_context *ctx, const char *path) ++{ ++ fz_stream *file = fz_open_file(ctx, path); ++ /* "fonterror : %s not found", path */ ++ fz_try(ctx) ++ { ++ parseTTF(ctx, file, 0, 0, path); ++ } ++ fz_always(ctx) ++ { ++ fz_drop_stream(ctx,file); ++ } ++ fz_catch(ctx) ++ { ++ fz_rethrow(ctx); ++ } ++} ++ ++static void ++parseTTCs(fz_context *ctx, const char *path) ++{ ++ FONT_COLLECTION fontcollectionBE; ++ ULONG i, numFonts, *offsettableBE = NULL; ++ ++ fz_stream *file = fz_open_file(ctx, path); ++ /* "fonterror : %s not found", path */ ++ ++ fz_var(offsettableBE); ++ ++ fz_try(ctx) ++ { ++ safe_read(ctx, file, 0, (char *)&fontcollectionBE, sizeof(FONT_COLLECTION)); ++ if (BEtoHl(fontcollectionBE.Tag) != TTAG_ttcf) ++ fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : wrong format %x", (unsigned int)BEtoHl(fontcollectionBE.Tag)); ++ if (BEtoHl(fontcollectionBE.Version) != TTC_VERSION1 && ++ BEtoHl(fontcollectionBE.Version) != TTC_VERSION2) ++ { ++ fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror : invalid version %x", (unsigned int)BEtoHl(fontcollectionBE.Version)); ++ } ++ ++ numFonts = BEtoHl(fontcollectionBE.NumFonts); ++ offsettableBE = fz_malloc_array(ctx, numFonts, sizeof(ULONG)); ++ ++ safe_read(ctx, file, sizeof(FONT_COLLECTION), (char *)offsettableBE, numFonts * sizeof(ULONG)); ++ for (i = 0; i < numFonts; i++) ++ parseTTF(ctx, file, BEtoHl(offsettableBE[i]), i, path); ++ } ++ fz_always(ctx) ++ { ++ fz_free(ctx, offsettableBE); ++ fz_drop_stream(ctx,file); ++ } ++ fz_catch(ctx) ++ { ++ fz_rethrow(ctx); ++ } ++} ++ ++static void ++extend_system_font_list(fz_context *ctx, const WCHAR *path) ++{ ++ WCHAR szPath[MAX_PATH], *lpFileName; ++ WIN32_FIND_DATA FileData; ++ HANDLE hList; ++ ++ GetFullPathName(path, nelem(szPath), szPath, &lpFileName); ++ ++ hList = FindFirstFile(szPath, &FileData); ++ if (hList == INVALID_HANDLE_VALUE) ++ { ++ // Don't complain about missing directories ++ if (GetLastError() == ERROR_FILE_NOT_FOUND) ++ return; ++ fz_throw(ctx, FZ_ERROR_GENERIC, "extend_system_font_list: unknown error %d", (int)GetLastError()); ++ } ++ do ++ { ++ if (!(FileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) ++ { ++ char szPathUtf8[MAX_PATH], *fileExt; ++ int res; ++ lstrcpyn(lpFileName, FileData.cFileName, szPath + MAX_PATH - lpFileName); ++ res = WideCharToMultiByte(CP_UTF8, 0, szPath, -1, szPathUtf8, sizeof(szPathUtf8), NULL, NULL); ++ if (!res) ++ { ++ fz_warn(ctx, "WideCharToMultiByte failed for %S", szPath); ++ continue; ++ } ++ fileExt = szPathUtf8 + strlen(szPathUtf8) - 4; ++ fz_try(ctx) ++ { ++ if (!_stricmp(fileExt, ".ttc")) ++ parseTTCs(ctx, szPathUtf8); ++ else if (!_stricmp(fileExt, ".ttf") || !_stricmp(fileExt, ".otf")) ++ parseTTFs(ctx, szPathUtf8); ++ } ++ fz_catch(ctx) ++ { ++ // ignore errors occurring while parsing a given font file ++ } ++ } ++ } while (FindNextFile(hList, &FileData)); ++ FindClose(hList); ++} ++ ++static void ++destroy_system_font_list(void) ++{ ++ free(fontlistMS.fontmap); ++ memset(&fontlistMS, 0, sizeof(fontlistMS)); ++} ++ ++static void ++create_system_font_list(fz_context *ctx) ++{ ++ WCHAR szFontDir[MAX_PATH]; ++ UINT cch; ++ ++ cch = GetWindowsDirectory(szFontDir, nelem(szFontDir) - 12); ++ if (0 < cch && cch < nelem(szFontDir) - 12) ++ { ++ /* willus.com edit--Win XP default MSVCRT.DLL doesn't have wcscat_s */ ++#ifdef _WIN64 ++ wcscat_s(szFontDir, MAX_PATH, L"\\Fonts\\*.?t?"); ++#else ++ wcscat(szFontDir,L"\\Fonts\\*.?t?"); ++#endif ++ extend_system_font_list(ctx, szFontDir); ++ } ++ ++ if (fontlistMS.len == 0) ++ fz_warn(ctx, "couldn't find any usable system fonts"); ++ ++#ifdef NOCJKFONT ++ { ++ // If no CJK fallback font is builtin but one has been shipped separately (in the same ++ // directory as the main executable), add it to the list of loadable system fonts ++ WCHAR szFile[MAX_PATH], *lpFileName; ++ GetModuleFileName(0, szFontDir, MAX_PATH); ++ GetFullPathName(szFontDir, MAX_PATH, szFile, &lpFileName); ++ lstrcpyn(lpFileName, L"DroidSansFallback.ttf", szFile + MAX_PATH - lpFileName); ++ extend_system_font_list(ctx, szFile); ++ } ++#endif ++ ++ // sort the font list, so that it can be searched binarily ++ qsort(fontlistMS.fontmap, fontlistMS.len, sizeof(pdf_fontmapMS), _stricmp); ++ ++#ifdef DEBUG ++ // allow to overwrite system fonts for debugging purposes ++ // (either pass a full path or a search pattern such as "fonts\*.ttf") ++ cch = GetEnvironmentVariable(L"MUPDF_FONTS_PATTERN", szFontDir, nelem(szFontDir)); ++ if (0 < cch && cch < nelem(szFontDir)) ++ { ++ int i, prev_len = fontlistMS.len; ++ extend_system_font_list(ctx, szFontDir); ++ for (i = prev_len; i < fontlistMS.len; i++) ++ { ++ pdf_fontmapMS *entry = bsearch(fontlistMS.fontmap[i].fontface, fontlistMS.fontmap, prev_len, sizeof(pdf_fontmapMS), lookup_compare); ++ if (entry) ++ *entry = fontlistMS.fontmap[i]; ++ } ++ qsort(fontlistMS.fontmap, fontlistMS.len, sizeof(pdf_fontmapMS), _stricmp); ++ } ++#endif ++ ++ // make sure to clean up after ourselves ++ atexit(destroy_system_font_list); ++} ++ ++static fz_font * ++pdf_load_windows_font_by_name(fz_context *ctx, const char *orig_name) ++{ ++ pdf_fontmapMS *found = NULL; ++ char *comma, *fontname; ++ fz_font *font; ++ ++ /* WILLUS MOD--not multi-threaded for k2pdfopt */ ++ /* fz_synchronize_begin(); */ ++ if (fontlistMS.len == 0) ++ { ++ fz_try(ctx) ++ { ++ create_system_font_list(ctx); ++ } ++ fz_catch(ctx) { } ++ } ++ /* WILLUS MOD--not multi-threaded for k2pdfopt */ ++ /* fz_synchronize_end(); */ ++ if (fontlistMS.len == 0) ++ fz_throw(ctx, FZ_ERROR_GENERIC, "fonterror: couldn't find any fonts"); ++ ++ // work on a normalized copy of the font name ++ fontname = fz_strdup(ctx, orig_name); ++ remove_spaces(fontname); ++ ++ // first, try to find the exact font name (including appended style information) ++ comma = strchr(fontname, ','); ++ if (comma) ++ { ++ *comma = '-'; ++ found = pdf_find_windows_font_path(fontname); ++ *comma = ','; ++ } ++ // second, substitute the font name with a known PostScript name ++ else ++ { ++ int i; ++ for (i = 0; i < nelem(baseSubstitutes) && !found; i++) ++ if (!strcmp(fontname, baseSubstitutes[i].name)) ++ found = pdf_find_windows_font_path(baseSubstitutes[i].pattern); ++ } ++ // third, search for the font name without additional style information ++ if (!found) ++ found = pdf_find_windows_font_path(fontname); ++ // fourth, try to separate style from basename for prestyled fonts (e.g. "ArialBold") ++ if (!found && !comma && (str_ends_with(fontname, "Bold") || str_ends_with(fontname, "Italic"))) ++ { ++ int styleLen = str_ends_with(fontname, "Bold") ? 4 : str_ends_with(fontname, "BoldItalic") ? 10 : 6; ++ fontname = fz_resize_array(ctx, fontname, strlen(fontname) + 2, sizeof(char)); ++ comma = fontname + strlen(fontname) - styleLen; ++ memmove(comma + 1, comma, styleLen + 1); ++ *comma = '-'; ++ found = pdf_find_windows_font_path(fontname); ++ *comma = ','; ++ if (!found) ++ found = pdf_find_windows_font_path(fontname); ++ } ++ // fifth, try to convert the font name from the common Chinese codepage 936 ++ if (!found && fontname[0] < 0) ++ { ++ WCHAR cjkNameW[MAX_FACENAME]; ++ char cjkName[MAX_FACENAME]; ++ if (MultiByteToWideChar(936, MB_ERR_INVALID_CHARS, fontname, -1, cjkNameW, nelem(cjkNameW)) && ++ WideCharToMultiByte(CP_UTF8, 0, cjkNameW, -1, cjkName, nelem(cjkName), NULL, NULL)) ++ { ++ comma = strchr(cjkName, ','); ++ if (comma) ++ { ++ *comma = '-'; ++ found = pdf_find_windows_font_path(cjkName); ++ *comma = ','; ++ } ++ if (!found) ++ found = pdf_find_windows_font_path(cjkName); ++ } ++ } ++ ++ fz_free(ctx, fontname); ++ if (!found) ++ fz_throw(ctx, FZ_ERROR_GENERIC, "couldn't find system font '%s'", orig_name); ++ ++ /* ++ fz_warn(ctx, "loading non-embedded font '%s' from '%s'", orig_name, found->fontpath); ++ */ ++ ++ font = fz_new_font_from_file(ctx, orig_name, found->fontpath, found->index, ++ strcmp(found->fontface, "DroidSansFallback") != 0); ++ /* willus mod for MuPDF v1.10, 10-21-2016 */ ++ { ++ fz_font_flags_t *flags; ++ flags=fz_font_flags(font); ++ if (flags!=NULL) ++ flags->ft_substitute = 1; ++ } ++ return font; ++} ++ ++static fz_font * ++pdf_load_windows_font(fz_context *ctx, const char *fontname, int bold, int italic, int needs_exact_metrics) ++{ ++ if (needs_exact_metrics) ++ { ++ const char *clean_name; ++ /* WILLUS: Declare pdf_clean_base14_name() */ ++ extern const char *pdf_clean_base14_name(const char *fontname); ++ ++ /* TODO: the metrics for Times-Roman and Courier don't match ++ those of Windows' Times New Roman and Courier New; for ++ some reason, Poppler doesn't seem to have this problem */ ++ int len; ++ if (fz_lookup_builtin_font(ctx,fontname, bold, italic, &len)) ++ return NULL; ++ ++ /* cf. http://code.google.com/p/sumatrapdf/issues/detail?id=2173 */ ++ clean_name = pdf_clean_base14_name(fontname); ++ if (clean_name != fontname && !strncmp(clean_name, "Times-", 6)) ++ return NULL; ++ } ++ ++ // TODO: unset font->ft_substitute for base14/needs_exact_metrics? ++ return pdf_load_windows_font_by_name(ctx, fontname); ++} ++ ++static const char *clean_font_name(const char *fontname) ++{ ++ int i, k; ++ for (i = 0; i < nelem(base_font_names); i++) ++ for (k = 0; base_font_names[i][k]; k++) ++ if (!strcmp_ignore_space(base_font_names[i][k], fontname)) ++ return base_font_names[i][0]; ++ return fontname; ++} ++ ++ ++/* SumatraPDF: expose clean_font_name */ ++static const char * pdf_clean_base14_name(const char *fontname) ++{ ++ return clean_font_name(fontname); ++} ++ ++static fz_font * ++pdf_load_windows_cjk_font(fz_context *ctx, const char *fontname, int ros, int serif) ++{ ++ fz_font *font; ++ ++ font=NULL; /* WILLUS: Avoid compiler warning */ ++ /* try to find a matching system font before falling back to an approximate one */ ++ fz_try(ctx) ++ { ++ font = pdf_load_windows_font_by_name(ctx, fontname); ++ } ++ fz_catch(ctx) ++ { ++ font = NULL; ++ } ++ if (font) ++ return font; ++ ++ /* try to fall back to a reasonable system font */ ++ fz_try(ctx) ++ { ++ if (serif) ++ { ++ switch (ros) ++ { ++ case FZ_ADOBE_CNS: font = pdf_load_windows_font_by_name(ctx, "MingLiU"); break; ++ case FZ_ADOBE_GB: font = pdf_load_windows_font_by_name(ctx, "SimSun"); break; ++ case FZ_ADOBE_JAPAN: font = pdf_load_windows_font_by_name(ctx, "MS-Mincho"); break; ++ case FZ_ADOBE_KOREA: font = pdf_load_windows_font_by_name(ctx, "Batang"); break; ++ default: fz_throw(ctx, FZ_ERROR_GENERIC, "invalid serif ros"); ++ } ++ } ++ else ++ { ++ switch (ros) ++ { ++ case FZ_ADOBE_CNS: font = pdf_load_windows_font_by_name(ctx, "DFKaiShu-SB-Estd-BF"); break; ++ case FZ_ADOBE_GB: ++ fz_try(ctx) ++ { ++ font = pdf_load_windows_font_by_name(ctx, "KaiTi"); ++ } ++ fz_catch(ctx) ++ { ++ font = pdf_load_windows_font_by_name(ctx, "KaiTi_GB2312"); ++ } ++ break; ++ case FZ_ADOBE_JAPAN: font = pdf_load_windows_font_by_name(ctx, "MS-Gothic"); break; ++ case FZ_ADOBE_KOREA: font = pdf_load_windows_font_by_name(ctx, "Gulim"); break; ++ default: fz_throw(ctx, FZ_ERROR_GENERIC, "invalid sans-serif ros"); ++ } ++ } ++ } ++ fz_catch(ctx) ++ { ++#ifdef NOCJKFONT ++ /* If no CJK fallback font is builtin, maybe one has been shipped separately */ ++ font = pdf_load_windows_font_by_name(ctx, "DroidSansFallback"); ++#else ++ fz_rethrow(ctx); ++#endif ++ } ++ ++ return font; ++} ++ ++#endif ++ ++void pdf_install_load_system_font_funcs(fz_context *ctx) ++{ ++#ifdef _WIN32 ++ fz_install_load_system_font_funcs(ctx, pdf_load_windows_font, pdf_load_windows_cjk_font, NULL); ++#endif ++} +diff --git a/source/fitz/font.c b/source/fitz/font.c +index 00c6e8f99..1448b4a56 100644 +--- a/source/fitz/font.c ++++ b/source/fitz/font.c +@@ -4,8 +4,11 @@ + #include "draw-imp.h" + + #include <ft2build.h> ++/* willus mod -- remove hb includes */ ++/* + #include "hb.h" + #include "hb-ft.h" ++*/ + + #include <assert.h> + +diff --git a/source/fitz/stext-device.c b/source/fitz/stext-device.c +index 2df90305e..b1f99e056 100644 +--- a/source/fitz/stext-device.c ++++ b/source/fitz/stext-device.c +@@ -825,6 +825,11 @@ fz_new_stext_device(fz_context *ctx, fz_stext_page *page, const fz_stext_options + dev->lastchar = ' '; + dev->curdir = 1; + dev->lasttext = NULL; ++ /* willus mod -- seems like this should be here, but not sure. */ ++ if (opts) ++ dev->flags = opts->flags; ++ else ++ dev->flags = 0; + + return (fz_device*)dev; + } +diff --git a/source/fitz/string.c b/source/fitz/string.c +index f8eedb682..7a767983d 100644 +--- a/source/fitz/string.c ++++ b/source/fitz/string.c +@@ -560,6 +560,10 @@ fz_utflen(const char *s) + */ + float fz_atof(const char *s) + { ++/* willus mod: atof(s), #if-#else-#endif */ ++#if (!defined(__SSE__)) ++ return(atof(s)); ++#else + float result; + + if (s == NULL) +@@ -572,6 +576,7 @@ float fz_atof(const char *s) + return 1; + result = fz_clamp(result, -FLT_MAX, FLT_MAX); + return result; ++#endif + } + + /* +diff --git a/source/pdf/pdf-annot.c b/source/pdf/pdf-annot.c +index 4dfdf36fe..acff7d12a 100644 +--- a/source/pdf/pdf-annot.c ++++ b/source/pdf/pdf-annot.c +@@ -5,8 +5,20 @@ + #include <string.h> + #include <time.h> + ++/* willus mod--don't use _mkgmtime--not available in Win XP */ + #ifdef _WIN32 +-#define timegm _mkgmtime ++static time_t timegm(struct tm *date); ++static time_t timegm(struct tm *date) ++ ++ { ++ time_t t,z; ++ struct tm gmz; ++ ++ z=(time_t)0; ++ gmz=(*gmtime(&z)); ++ t=mktime(date)-mktime(&gmz); ++ return(t); ++ } + #endif + + #define isdigit(c) (c >= '0' && c <= '9') +diff --git a/source/pdf/pdf-link.c b/source/pdf/pdf-link.c +index 37444b471..613cc05b9 100644 +--- a/source/pdf/pdf-link.c ++++ b/source/pdf/pdf-link.c +@@ -345,6 +345,9 @@ pdf_resolve_link(fz_context *ctx, pdf_document *doc, const char *uri, float *xp, + } + return page; + } ++/* willus mod -- be quiet */ ++/* + fz_warn(ctx, "unknown link uri '%s'", uri); ++*/ + return -1; + } +diff --git a/source/pdf/pdf-parse.c b/source/pdf/pdf-parse.c +index 04a772204..9dd0cd898 100644 +--- a/source/pdf/pdf-parse.c ++++ b/source/pdf/pdf-parse.c +@@ -663,9 +663,14 @@ pdf_parse_ind_obj(fz_context *ctx, pdf_document *doc, + if (c == '\r') + { + c = fz_peek_byte(ctx, file); ++/* willus mod -- no warning */ ++/* + if (c != '\n') + fz_warn(ctx, "line feed missing after stream begin marker (%d %d R)", num, gen); + else ++*/ ++if (c=='\n') ++/* willus mod -- end */ + fz_read_byte(ctx, file); + } + stm_ofs = fz_tell(ctx, file); +diff --git a/source/pdf/pdf-xref.c b/source/pdf/pdf-xref.c +index 8f888059b..08de7bfba 100644 +--- a/source/pdf/pdf-xref.c ++++ b/source/pdf/pdf-xref.c +@@ -710,8 +710,11 @@ pdf_xref_size_from_old_trailer(fz_context *ctx, pdf_document *doc, pdf_lexbuf *b + if (!s) + fz_throw(ctx, FZ_ERROR_GENERIC, "xref subsection length missing"); + len = fz_atoi(fz_strsep(&s, " ")); ++/* willus mod -- no warning */ ++/* + if (len < 0) + fz_throw(ctx, FZ_ERROR_GENERIC, "xref subsection length must be positive"); ++*/ + + /* broken pdfs where the section is not on a separate line */ + if (s && *s != '\0') +@@ -1378,7 +1381,10 @@ pdf_init_document(fz_context *ctx, pdf_document *doc) + { + pdf_drop_xref_sections(ctx, doc); + fz_rethrow_if(ctx, FZ_ERROR_TRYLATER); ++/* willus mod -- be quiet */ ++/* + fz_warn(ctx, "trying to repair broken xref"); ++*/ + repaired = 1; + } + +@@ -1506,7 +1512,10 @@ pdf_drop_document_imp(fz_context *ctx, pdf_document *doc) + /* Swallow error, but continue dropping */ + } + ++/* willu smod -- no pdf_drop_js */ ++/* + pdf_drop_js(ctx, doc->js); ++*/ + + pdf_drop_xref_sections(ctx, doc); + fz_free(ctx, doc->xref_index); +-- +2.22.0 + diff --git a/pkgs/applications/misc/k2pdfopt/tesseract.patch b/pkgs/applications/misc/k2pdfopt/tesseract.patch index b882f5b949c..adfee9ae282 100644 --- a/pkgs/applications/misc/k2pdfopt/tesseract.patch +++ b/pkgs/applications/misc/k2pdfopt/tesseract.patch @@ -1,13 +1,675 @@ +From 39aa8502eee7bb669a29d1a9b3bfe5c9595ad960 Mon Sep 17 00:00:00 2001 +From: Daniel Fullmer <danielrf12@gmail.com> +Date: Fri, 13 Sep 2019 13:45:05 -0400 +Subject: [PATCH] Willus mod changes from k2pdfopt + +--- + src/api/Makefile.am | 1 + + src/api/baseapi.cpp | 87 +++++++++++ + src/api/baseapi.h | 3 + + src/api/tesscapi.cpp | 311 +++++++++++++++++++++++++++++++++++++ + src/api/tesseract.h | 29 ++++ + src/ccmain/tessedit.cpp | 5 +- + src/ccutil/ccutil.h | 7 + + src/ccutil/genericvector.h | 21 ++- + src/ccutil/mainblk.cpp | 17 +- + src/ccutil/params.cpp | 3 +- + src/ccutil/serialis.cpp | 3 + + src/ccutil/serialis.h | 2 + + src/lstm/input.cpp | 3 + + 13 files changed, 488 insertions(+), 4 deletions(-) + create mode 100644 src/api/tesscapi.cpp + create mode 100644 src/api/tesseract.h + diff --git a/src/api/Makefile.am b/src/api/Makefile.am -index d8c1e54..46ead13 100644 +index d9b76eb6..cd2dc30f 100644 --- a/src/api/Makefile.am +++ b/src/api/Makefile.am -@@ -42,7 +42,7 @@ libtesseract_api_la_CPPFLAGS = $(AM_CPPFLAGS) - if VISIBILITY - libtesseract_api_la_CPPFLAGS += -DTESS_EXPORTS - endif --libtesseract_api_la_SOURCES = baseapi.cpp capi.cpp renderer.cpp pdfrenderer.cpp -+libtesseract_api_la_SOURCES = baseapi.cpp capi.cpp renderer.cpp pdfrenderer.cpp tesscapi.cpp +@@ -39,6 +39,7 @@ libtesseract_api_la_SOURCES += lstmboxrenderer.cpp + libtesseract_api_la_SOURCES += pdfrenderer.cpp + libtesseract_api_la_SOURCES += wordstrboxrenderer.cpp + libtesseract_api_la_SOURCES += renderer.cpp ++libtesseract_api_la_SOURCES += tesscapi.cpp lib_LTLIBRARIES += libtesseract.la - libtesseract_la_LDFLAGS = + libtesseract_la_LDFLAGS = $(LEPTONICA_LIBS) $(OPENCL_LDFLAGS) $(libarchive_LIBS) +diff --git a/src/api/baseapi.cpp b/src/api/baseapi.cpp +index 9245d07c..ea964ee6 100644 +--- a/src/api/baseapi.cpp ++++ b/src/api/baseapi.cpp +@@ -215,6 +215,14 @@ TessBaseAPI::TessBaseAPI() + // Use the current locale if building debug code. + std::locale::global(std::locale("")); + #endif ++ const char *locale; ++ locale = std::setlocale(LC_ALL, nullptr); ++/* willus mod Remove assertions--taken care of in tesscapi.cpp */ ++// ASSERT_HOST(!strcmp(locale, "C")); ++ locale = std::setlocale(LC_CTYPE, nullptr); ++// ASSERT_HOST(!strcmp(locale, "C")); ++ locale = std::setlocale(LC_NUMERIC, nullptr); ++// ASSERT_HOST(!strcmp(locale, "C")); + } + + TessBaseAPI::~TessBaseAPI() { +@@ -1333,6 +1341,85 @@ static void AddBoxToTSV(const PageIterator* it, PageIteratorLevel level, + text->add_str_int("\t", bottom - top); + } + ++/* willus mod */ ++int TessBaseAPI::GetOCRWords(int **x00,int **y00,int **x11,int **y11,int **ybaseline0, ++ char **utf8words) ++ ++ { ++ int iword,nwords,totlen,it8; ++ int *x0,*y0,*x1,*y1,*ybaseline; ++ char *tutf8; ++ ++ ResultIterator *res_it = GetIterator(); ++ /* Count words */ ++ iword=0; ++ totlen=0; ++ while (!res_it->Empty(RIL_BLOCK)) ++ { ++ if (res_it->Empty(RIL_WORD)) ++ { ++ res_it->Next(RIL_WORD); ++ continue; ++ } ++ iword++; ++ STRING textstr=std::unique_ptr<const char[]>(res_it->GetUTF8Text(RIL_WORD)).get(); ++ totlen+=strlen(textstr.string())+1; ++ res_it->Next(RIL_WORD); ++ } ++ nwords=iword; ++/* ++printf("\nnwords=%d, totlen=%d\n",nwords,totlen); ++*/ ++ x0=(*x00)=(int *)malloc(sizeof(int)*5*nwords); ++ y0=(*y00)=&x0[nwords]; ++ x1=(*x11)=&y0[nwords]; ++ y1=(*y11)=&x1[nwords]; ++ ybaseline=(*ybaseline0)=&y1[nwords]; ++ tutf8=(*utf8words)=(char *)malloc(totlen); ++ iword=0; ++ it8=0; ++ res_it->Begin(); ++ while (!res_it->Empty(RIL_BLOCK)) ++ { ++ if (res_it->Empty(RIL_WORD)) ++ { ++ res_it->Next(RIL_WORD); ++ continue; ++ } ++ STRING textstr=std::unique_ptr<const char[]>(res_it->GetUTF8Text(RIL_WORD)).get(); ++ strcpy(&tutf8[it8],textstr.string()); ++ it8 += strlen(&tutf8[it8])+1; ++ /* ++ STRING textstr(""); ++ textstr += std::unique_ptr<const char[]>(res_it->GetUTF8Text(RIL_WORD)).get(); ++ */ ++/* ++printf("Word %d: '%s'\n",iword,textstr.string()); ++*/ ++ int left, top, right, bottom; ++ int u1,v1,u2,v2; ++ res_it->BoundingBox(RIL_WORD, &left, &top, &right, &bottom); ++ res_it->Baseline(RIL_WORD, &u1, &v1, &u2, &v2); ++ x0[iword]=left; ++ x1[iword]=right; ++ y0[iword]=top; ++ y1[iword]=bottom; ++ ybaseline[iword]=(v1+v2)/2; ++ iword++; ++/* ++printf("BB: (%d,%d)-(%d,%d) BL: (%d,%d)-(%d,%d)\n",left,bottom,right,top,x1,y1,x2,y2); ++*/ ++ res_it->Next(RIL_WORD); ++ } ++/* ++printf("iword=%d\n",iword); ++*/ ++ return(iword); ++ } ++ ++/* willus mod */ ++int GetOCRWords(int **x0,int **y0,int **x1,int **y1,int **ybaseline,char **utf8words); ++ + /** + * Make a TSV-formatted string from the internal data structures. + * page_number is 0-based but will appear in the output as 1-based. +diff --git a/src/api/baseapi.h b/src/api/baseapi.h +index 3724dd92..23be5920 100644 +--- a/src/api/baseapi.h ++++ b/src/api/baseapi.h +@@ -575,6 +575,9 @@ class TESS_API TessBaseAPI { + */ + char* GetHOCRText(ETEXT_DESC* monitor, int page_number); + ++/* willus mod */ ++int GetOCRWords(int **x0,int **y0,int **x1,int **y1,int **ybaseline,char **utf8words); ++ + /** + * Make a HTML-formatted string with hOCR markup from the internal + * data structures. +diff --git a/src/api/tesscapi.cpp b/src/api/tesscapi.cpp +new file mode 100644 +index 00000000..1752fafe +--- /dev/null ++++ b/src/api/tesscapi.cpp +@@ -0,0 +1,311 @@ ++/* ++** tesscapi.cpp willus.com attempt at C wrapper for tesseract. ++** (Butchered from tesseractmain.cpp) ++** Last udpated 9-1-12 ++** ++** Copyright (C) 2012 http://willus.com ++** ++** This program is free software: you can redistribute it and/or modify ++** it under the terms of the GNU Affero General Public License as ++** published by the Free Software Foundation, either version 3 of the ++** License, or (at your option) any later version. ++** ++** This program is distributed in the hope that it will be useful, ++** but WITHOUT ANY WARRANTY; without even the implied warranty of ++** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++** GNU Affero General Public License for more details. ++** ++** You should have received a copy of the GNU Affero General Public License ++** along with this program. If not, see <http://www.gnu.org/licenses/>. ++** ++*/ ++ ++/* ++#include "mfcpch.h" ++*/ ++// #define USE_VLD //Uncomment for Visual Leak Detector. ++#if (defined _MSC_VER && defined USE_VLD) ++#include <vld.h> ++#endif ++ ++// Include automatically generated configuration file if running autoconf ++#ifdef HAVE_CONFIG_H ++#include "config_auto.h" ++#endif ++#include <locale.h> ++#ifdef USING_GETTEXT ++#include <libintl.h> ++#define _(x) gettext(x) ++#else ++#define _(x) (x) ++#endif ++ ++#include "allheaders.h" ++#include "baseapi.h" ++#include "strngs.h" ++#include "params.h" ++#include "blobs.h" ++#include "simddetect.h" ++#include "tesseractclass.h" ++/* ++#include "notdll.h" ++*/ ++ ++/* C Wrappers */ ++#include "tesseract.h" ++ ++// static tesseract::TessBaseAPI api[4]; ++ ++/* ++** ocr_type=0: OEM_DEFAULT ++** ocr_type=1: OEM_TESSERACT_ONLY ++** ocr_type=2: OEM_LSTM_ONLY ++** ocr_type=3: OEM_TESSERACT_LSTM_COMBINED ++*/ ++void *tess_capi_init(char *datapath,char *language,int ocr_type,FILE *out, ++ char *initstr,int maxlen,int *status) ++ ++ { ++ char original_locale[256]; ++ tesseract::TessBaseAPI *api = new tesseract::TessBaseAPI; ++/* ++printf("@tess_capi_init\n"); ++printf(" datapath='%s'\n",datapath); ++printf(" language='%s'\n",language); ++printf(" ocr_type=%d\n",ocr_type); ++*/ ++#ifdef USE_NLS ++ setlocale (LC_ALL, ""); ++ bindtextdomain (PACKAGE, LOCALEDIR); ++ textdomain (PACKAGE); ++#endif ++ /* willus mod, 11-24-16 */ ++ /* Tesseract needs "C" locale to correctly parse all data .traineddata files. */ ++/* ++printf("locale='%s'\n",setlocale(LC_ALL,NULL)); ++printf("ctype='%s'\n",setlocale(LC_CTYPE,NULL)); ++printf("numeric='%s'\n",setlocale(LC_NUMERIC,NULL)); ++*/ ++ strncpy(original_locale,setlocale(LC_ALL,NULL),255); ++ original_locale[255]='\0'; ++/* ++printf("original_locale='%s'\n",original_locale); ++*/ ++ setlocale(LC_ALL,"C"); ++/* ++printf("new locale='%s'\n",setlocale(LC_ALL,NULL)); ++printf("new ctype='%s'\n",setlocale(LC_CTYPE,NULL)); ++printf("new numeric='%s'\n",setlocale(LC_NUMERIC,NULL)); ++*/ ++ // fprintf(stderr, "tesseract %s\n", tesseract::TessBaseAPI::Version()); ++ // Make the order of args a bit more forgiving than it used to be. ++ const char* lang = "eng"; ++ tesseract::PageSegMode pagesegmode = tesseract::PSM_SINGLE_BLOCK; ++ if (language!=NULL && language[0]!='\0') ++ lang = language; ++ /* ++ if (output == NULL) ++ { ++ fprintf(stderr, _("Usage:%s imagename outputbase [-l lang] " ++ "[-psm pagesegmode] [configfile...]\n"), argv[0]); ++ fprintf(stderr, ++ _("pagesegmode values are:\n" ++ "0 = Orientation and script detection (OSD) only.\n" ++ "1 = Automatic page segmentation with OSD.\n" ++ "2 = Automatic page segmentation, but no OSD, or OCR\n" ++ "3 = Fully automatic page segmentation, but no OSD. (Default)\n" ++ "4 = Assume a single column of text of variable sizes.\n" ++ "5 = Assume a single uniform block of vertically aligned text.\n" ++ "6 = Assume a single uniform block of text.\n" ++ "7 = Treat the image as a single text line.\n" ++ "8 = Treat the image as a single word.\n" ++ "9 = Treat the image as a single word in a circle.\n" ++ "10 = Treat the image as a single character.\n")); ++ fprintf(stderr, _("-l lang and/or -psm pagesegmode must occur before any" ++ "configfile.\n")); ++ exit(1); ++ } ++ */ ++/* ++printf("SSE = %s\n",SIMDDetect::IsSSEAvailable() ? "AVAILABLE" : "NOT AVAILABLE"); ++printf("AVX = %s\n",SIMDDetect::IsAVXAvailable() ? "AVAILABLE" : "NOT AVAILABLE"); ++*/ ++/* ++v4.00 loads either TESSERACT enginer, LSTM engine, or both. No CUBE. ++*/ ++ ocr_type=0; /* Ignore specified and use default */ ++ api->SetOutputName(NULL); ++ (*status)=api->Init(datapath,lang, ++ ocr_type==0 ? tesseract::OEM_DEFAULT : ++ (ocr_type==1 ? tesseract::OEM_TESSERACT_ONLY : ++ (ocr_type==2 ? tesseract::OEM_LSTM_ONLY : ++ (tesseract::OEM_TESSERACT_LSTM_COMBINED)))); ++ if ((*status)!=0) ++ { ++ /* willus mod, 11-24-16 */ ++ setlocale(LC_ALL,original_locale); ++ api->End(); ++ delete api; ++ return(NULL); ++ } ++ /* ++ api.Init("tesscapi",lang,tesseract::OEM_DEFAULT, ++ &(argv[arg]), argc - arg, NULL, NULL, false); ++ */ ++ // We have 2 possible sources of pagesegmode: a config file and ++ // the command line. For backwards compatability reasons, the ++ // default in tesseract is tesseract::PSM_SINGLE_BLOCK, but the ++ // default for this program is tesseract::PSM_AUTO. We will let ++ // the config file take priority, so the command-line default ++ // can take priority over the tesseract default, so we use the ++ // value from the command line only if the retrieved mode ++ // is still tesseract::PSM_SINGLE_BLOCK, indicating no change ++ // in any config file. Therefore the only way to force ++ // tesseract::PSM_SINGLE_BLOCK is from the command line. ++ // It would be simpler if we could set the value before Init, ++ // but that doesn't work. ++ if (api->GetPageSegMode() == tesseract::PSM_SINGLE_BLOCK) ++ api->SetPageSegMode(pagesegmode); ++ ++ /* ++ ** Initialization message ++ */ ++ { ++ char istr[1024]; ++ int sse,avx; ++ ++// printf("tessedit_ocr_engine_mode = %d\n",tessedit_ocr_engine_mode); ++ sprintf(istr,"%s",api->Version()); ++ sse=tesseract::SIMDDetect::IsSSEAvailable(); ++ avx=tesseract::SIMDDetect::IsAVXAvailable(); ++ if (sse || avx) ++ sprintf(&istr[strlen(istr)]," [%s]",sse&&avx?"SSE+AVX":(sse?"SSE":"AVX")); ++ sprintf(&istr[strlen(istr)],"\n Tesseract data folder = '%s'",datapath==NULL?getenv("TESSDATA_PREFIX"):datapath); ++ strcat(istr,"\n Tesseract languages: "); ++ GenericVector<STRING> languages; ++ api->GetLoadedLanguagesAsVector(&languages); ++/* ++printf("OEM=%d\n",api->oem()); ++printf("Langs='%s'\n",api->GetInitLanguagesAsString()); ++printf("AnyTessLang()=%d\n",(int)api->tesseract()->AnyTessLang()); ++printf("AnyLSTMLang()=%d\n",(int)api->tesseract()->AnyLSTMLang()); ++printf("num_sub_langs()=%d\n",api->tesseract()->num_sub_langs()); ++printf("languages.size()=%d\n",(int)languages.size()); ++*/ ++ ++ for (int i=0;i<=api->tesseract()->num_sub_langs();i++) ++ { ++ tesseract::Tesseract *lang1; ++ int eng; ++ lang1 = i==0 ? api->tesseract() : api->tesseract()->get_sub_lang(i-1); ++ eng=(int)lang1->tessedit_ocr_engine_mode; ++ sprintf(&istr[strlen(istr)],"%s%s [%s]",i==0?"":", ",lang1->lang.string(), ++ eng==2?"LSTM+Tess":(eng==1?"LSTM":"Tess")); ++ } ++/* ++printf("%d. '%s'\n",i+1,languages[i].string()); ++printf(" sublang[%d].oem_engine = %d\n",i+1,(int)api->tesseract()->get_sub_lang(i)->tessedit_ocr_engine_mode); ++*/ ++ ++ /* ++ if (ocr_type==0 || ocr_type==3) ++ sprintf(&istr[strlen(istr)],"[LSTM+] (lang="); ++ else if (ocr_type==2) ++ sprintf(&istr[strlen(istr)],"[LSTM] (lang="); ++ strncpy(&istr[strlen(istr)],language,253-strlen(istr)); ++ istr[253]='\0'; ++ strcat(istr,")"); ++ */ ++ if (out!=NULL) ++ fprintf(out,"%s\n",istr); ++ if (initstr!=NULL) ++ { ++ strncpy(initstr,istr,maxlen-1); ++ initstr[maxlen-1]='\0'; ++ } ++ } ++ ++ ++ /* Turn off LSTM debugging output */ ++ api->SetVariable("lstm_debug_level","0"); ++#if (WILLUSDEBUG & 1) ++ api->SetVariable("lstm_debug_level","9"); ++ api->SetVariable("paragraph_debug_level","9"); ++ api->SetVariable("tessdata_manager_debug_level","9"); ++ api->SetVariable("tosp_debug_level","9"); ++ api->SetVariable("wordrec_debug_level","9"); ++ api->SetVariable("segsearch_debug_level","9"); ++#endif ++ /* willus mod, 11-24-16 */ ++ setlocale(LC_ALL,original_locale); ++ return((void *)api); ++ } ++ ++ ++int tess_capi_get_ocr(void *vapi,PIX *pix,char *outstr,int maxlen,int segmode,FILE *out) ++ ++ { ++ tesseract::TessBaseAPI *api; ++ static int old_segmode=-1; ++ ++ api=(tesseract::TessBaseAPI *)vapi; ++ if (old_segmode != segmode) ++ { ++ old_segmode=segmode; ++ api->SetPageSegMode((tesseract::PageSegMode)segmode); ++ } ++ if (!api->ProcessPage(pix,0,NULL,NULL,0,NULL)) ++ { ++ /* pixDestroy(&pix); */ ++ if (out!=NULL) ++ fprintf(out,"tesscapi: Error during bitmap processing.\n"); ++ api->Clear(); ++ return(-1); ++ } ++ strncpy(outstr,api->GetUTF8Text(),maxlen-1); ++ outstr[maxlen-1]='\0'; ++ api->Clear(); ++ return(0); ++ } ++ ++ ++int tess_capi_get_ocr_multiword(void *vapi,PIX *pix,int segmode, ++ int **left,int **top,int **right,int **bottom, ++ int **ybase,char **text,int *nw, ++ FILE *out) ++ ++ { ++ tesseract::TessBaseAPI *api; ++ static int old_segmode=-1; ++ ++ api=(tesseract::TessBaseAPI *)vapi; ++ if (old_segmode != segmode) ++ { ++ old_segmode=segmode; ++ api->SetPageSegMode((tesseract::PageSegMode)segmode); ++ } ++ if (!api->ProcessPage(pix,0,NULL,NULL,0,NULL)) ++ { ++ if (out!=NULL) ++ fprintf(out,"tesscapi: Error during bitmap processing.\n"); ++ api->Clear(); ++ (*nw)=0; ++ return(-1); ++ } ++ (*nw)=api->GetOCRWords(left,top,right,bottom,ybase,text); ++ api->Clear(); ++ return(0); ++ } ++ ++ ++void tess_capi_end(void *vapi) ++ ++ { ++ tesseract::TessBaseAPI *api; ++ ++ if (vapi==NULL) ++ return; ++ api=(tesseract::TessBaseAPI *)vapi; ++ api->End(); ++ delete api; ++ } +diff --git a/src/api/tesseract.h b/src/api/tesseract.h +new file mode 100644 +index 00000000..575948cc +--- /dev/null ++++ b/src/api/tesseract.h +@@ -0,0 +1,29 @@ ++/* ++** Willus.com's Tesseract C Wrappers ++** ++** 6-8-12 ++** ++*/ ++ ++#ifndef _TESSERACT_H_ ++#define _TESSERACT_H_ ++ ++//#include <leptonica.h> ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++void *tess_capi_init(char *datapath,char *language,int ocr_type,FILE *out, ++ char *initstr,int maxlen,int *status); ++int tess_capi_get_ocr(void *api,PIX *pix,char *outstr,int maxlen,int segmode,FILE *out); ++int tess_capi_get_ocr_multiword(void *vapi,PIX *pix,int segmode, ++ int **left,int **top,int **right,int **bottom, ++ int **ybase,char **text,int *nw, ++ FILE *out); ++void tess_capi_end(void *api); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif +diff --git a/src/ccmain/tessedit.cpp b/src/ccmain/tessedit.cpp +index 17f0951b..7af94ee2 100644 +--- a/src/ccmain/tessedit.cpp ++++ b/src/ccmain/tessedit.cpp +@@ -101,6 +101,10 @@ bool Tesseract::init_tesseract_lang_data( + " to your \"tessdata\" directory.\n"); + return false; + } ++ /* willus mod */ ++ TFile fp; ++ strncpy(fp.tfile_filename,tessdata_path.string(),511); ++ fp.tfile_filename[511]='\0'; + #ifndef DISABLED_LEGACY_ENGINE + if (oem == OEM_DEFAULT) { + // Set the engine mode from availability, which can then be overridden by +@@ -116,7 +120,6 @@ bool Tesseract::init_tesseract_lang_data( + #endif // ndef DISABLED_LEGACY_ENGINE + + // If a language specific config file (lang.config) exists, load it in. +- TFile fp; + if (mgr->GetComponent(TESSDATA_LANG_CONFIG, &fp)) { + ParamUtils::ReadParamsFromFp(SET_PARAM_CONSTRAINT_NONE, &fp, + this->params()); +diff --git a/src/ccutil/ccutil.h b/src/ccutil/ccutil.h +index 71e89c60..bdeccc14 100644 +--- a/src/ccutil/ccutil.h ++++ b/src/ccutil/ccutil.h +@@ -80,6 +80,13 @@ class CCUtil { + // Member parameters. + // These have to be declared and initialized after params_ member, since + // params_ should be initialized before parameters are added to it. ++/* willus mod */ ++/* ++ #ifdef _WIN32 ++ STRING_VAR_H(tessedit_module_name, WINDLLNAME, ++ "Module colocated with tessdata dir"); ++ #endif ++*/ + INT_VAR_H(ambigs_debug_level, 0, "Debug level for unichar ambiguities"); + BOOL_VAR_H(use_definite_ambigs_for_classifier, false, + "Use definite ambiguities when running character classifier"); +diff --git a/src/ccutil/genericvector.h b/src/ccutil/genericvector.h +index 3556d153..3a5e8662 100644 +--- a/src/ccutil/genericvector.h ++++ b/src/ccutil/genericvector.h +@@ -382,7 +382,26 @@ inline bool LoadDataFromFile(const char* filename, GenericVector<char>* data) { + // reserve an extra byte in case caller wants to append a '\0' character + data->reserve(size + 1); + data->resize_no_init(size); +- result = static_cast<long>(fread(&(*data)[0], 1, size, fp)) == size; ++ /* willus mod Dec 2018--weird issue with Win XP and MinGW gcc 7.3.0 */ ++ /* Can't read entire file at once -- need to break up into smaller blocksize reads */ ++ { ++ int frs,n; ++ int blocksize; ++ blocksize=1024*1024; ++ for (n=0;1;) ++ { ++ int bs; ++ bs= size-n > blocksize ? blocksize : size-n; ++ frs=(int)fread(&(*data)[n],1,bs,fp); ++ n+=frs; ++ if (frs<bs || bs<blocksize || n>=size) ++ break; ++ } ++ result = static_cast<long>((long)n==size); ++ } ++ /* ++ result = static_cast<long>(fread(&(*data)[0], 1, size, fp)) == size; ++ */ + } + fclose(fp); + } +diff --git a/src/ccutil/mainblk.cpp b/src/ccutil/mainblk.cpp +index 52b04b04..80b26044 100644 +--- a/src/ccutil/mainblk.cpp ++++ b/src/ccutil/mainblk.cpp +@@ -55,8 +55,22 @@ void CCUtil::main_setup(const char *argv0, const char *basename) { + #if defined(_WIN32) + } else if (datadir == nullptr || _access(datadir.string(), 0) != 0) { + /* Look for tessdata in directory of executable. */ ++ /* ++ char drive[_MAX_DRIVE]; ++ char dir[_MAX_DIR]; ++ */ + char path[_MAX_PATH]; +- DWORD length = GetModuleFileName(nullptr, path, sizeof(path)); ++ int i; ++ /* DWORD length = */ GetModuleFileName(nullptr, path, sizeof(path)); ++ /* willus mod--avoid _splitpath_s -- not in XP */ ++ for (i=strlen(path)-1;i>=0 && path[i]!='/' && path[i]!='\\';i--); ++ if (i>=0) ++ { ++ path[i]='\0'; ++ datadir=path; ++ datadir += "/tessdata"; ++ } ++ /* + if (length > 0 && length < sizeof(path)) { + char* separator = std::strrchr(path, '\\'); + if (separator != nullptr) { +@@ -65,6 +79,7 @@ void CCUtil::main_setup(const char *argv0, const char *basename) { + datadir += "/tessdata"; + } + } ++ */ + #endif /* _WIN32 */ + #if defined(TESSDATA_PREFIX) + } else { +diff --git a/src/ccutil/params.cpp b/src/ccutil/params.cpp +index 00bf2563..486c5ce0 100644 +--- a/src/ccutil/params.cpp ++++ b/src/ccutil/params.cpp +@@ -82,7 +82,8 @@ bool ParamUtils::ReadParamsFromFp(SetParamConstraint constraint, TFile *fp, + + if (!foundit) { + anyerr = true; // had an error +- tprintf("Warning: Parameter not found: %s\n", line); ++ /* willus mod */ ++ tprintf("Tesseract warning: Parameter %s not found in file %s.\n",line,fp->tfile_filename); + } + } + } +diff --git a/src/ccutil/serialis.cpp b/src/ccutil/serialis.cpp +index 7def011f..6107a494 100644 +--- a/src/ccutil/serialis.cpp ++++ b/src/ccutil/serialis.cpp +@@ -201,6 +201,9 @@ bool TFile::Open(const STRING& filename, FileReader reader) { + offset_ = 0; + is_writing_ = false; + swap_ = false; ++ /* willus mod */ ++ strncpy(tfile_filename,filename.string(),511); ++ tfile_filename[511]='\0'; + if (reader == nullptr) + return LoadDataFromFile(filename, data_); + else +diff --git a/src/ccutil/serialis.h b/src/ccutil/serialis.h +index 095b9227..4cc8251e 100644 +--- a/src/ccutil/serialis.h ++++ b/src/ccutil/serialis.h +@@ -77,6 +77,8 @@ class TFile { + public: + TFile(); + ~TFile(); ++ /* willus mod */ ++ char tfile_filename[512]; + + // All the Open methods load the whole file into memory for reading. + // Opens a file with a supplied reader, or nullptr to use the default. +diff --git a/src/lstm/input.cpp b/src/lstm/input.cpp +index 73b584b3..0b0b54c3 100644 +--- a/src/lstm/input.cpp ++++ b/src/lstm/input.cpp +@@ -93,8 +93,11 @@ Pix* Input::PrepareLSTMInputs(const ImageData& image_data, + return nullptr; + } + if (width < min_width || height < min_width) { ++ /* willus mod -- no warning */ ++ /* + tprintf("Image too small to scale!! (%dx%d vs min width of %d)\n", width, + height, min_width); ++ */ + pixDestroy(&pix); + return nullptr; + } +-- +2.22.0 + diff --git a/pkgs/applications/misc/llpp/default.nix b/pkgs/applications/misc/llpp/default.nix index c66ef21416b..2c2acb6a743 100644 --- a/pkgs/applications/misc/llpp/default.nix +++ b/pkgs/applications/misc/llpp/default.nix @@ -5,12 +5,12 @@ assert lib.versionAtLeast (lib.getVersion ocaml) "4.07"; stdenv.mkDerivation rec { pname = "llpp"; - version = "30"; + version = "31"; src = fetchgit { url = "git://repo.or.cz/llpp.git"; rev = "v${version}"; - sha256 = "0iilpzf12hs0zky58j55l4y5dvzv7fc53nsrg324n9vka92mppvd"; + sha256 = "14ibsm1zzxfidjajcj30b5m9in10q3817izahsjvkmryrvvn6qsg"; fetchSubmodules = false; }; diff --git a/pkgs/applications/misc/llpp/fix-build-bash.patch b/pkgs/applications/misc/llpp/fix-build-bash.patch index 25d503290ce..13dbdb926c8 100644 --- a/pkgs/applications/misc/llpp/fix-build-bash.patch +++ b/pkgs/applications/misc/llpp/fix-build-bash.patch @@ -1,14 +1,5 @@ -From cccadedfbcb6764a38382154838113a6b2fd4dee Mon Sep 17 00:00:00 2001 -From: Michael Hoang <enzime@users.noreply.github.com> -Date: Mon, 10 Dec 2018 15:08:01 +1100 -Subject: [PATCH] Patch build.bash for nixpkgs - ---- - build.bash | 37 ++----------------------------------- - 1 file changed, 2 insertions(+), 35 deletions(-) - diff --git a/build.bash b/build.bash -index 1588011..72117d9 100755 +index 7c278b6..41494c5 100755 --- a/build.bash +++ b/build.bash @@ -29,7 +29,6 @@ srcd="$(dirname $0)" @@ -20,10 +11,10 @@ index 1588011..72117d9 100755 mkdir -p $outd/{$wsid,lablGL} :>$outd/ordered @@ -39,12 +38,6 @@ isfresh() { test -r "$1.past" && . "$1.past" && test "$k" = "$2"; } - mbt=native + mbt=${mbt:-native} mulibs="$mudir/build/$mbt/libmupdf.a" # $mudir/build/$mbt/libmupdf-third.a --keycmd="(cd $mudir && git describe --tags --dirty); digest $mulibs" +-keycmd="(cd $mudir && make -q build=$mbt libs && echo); digest $mulibs" -isfresh "$mulibs" "$(eval $keycmd)" || ( - make -C "$mudir" build=$mbt -j $mjobs libs - echo "k='$(eval $keycmd)'" >$mudir/build/$mbt/libmupdf.a.past @@ -32,12 +23,12 @@ index 1588011..72117d9 100755 oincs() { local i= local incs1= -@@ -90,32 +83,6 @@ mflags() { +@@ -90,34 +83,6 @@ mflags() { } overs="$(ocamlc -vnum 2>/dev/null)" || overs="" --test "$overs" = "4.07.0" || { -- url=https://caml.inria.fr/pub/distrib/ocaml-4.07/ocaml-4.07.0.tar.xz +-test "$overs" = "4.08" || { +- url=https://caml.inria.fr/pub/distrib/ocaml-4.08/ocaml-4.08.0.tar.xz - txz=$outd/$(basename $url) - isfresh $txz $url || { - executable_p() { command -v "$1" >/dev/null 2>&1; } @@ -54,8 +45,10 @@ index 1588011..72117d9 100755 - tar xf $txz -C $outd - bn=$(basename $url) - cd $outd/${bn%.tar.xz} -- ./configure -prefix $absprefix \ -- -no-graph -no-debugger -no-ocamldoc -no-native-compiler +- ./configure --disable-vmthreads --disable-graph-lib \ +- --disable-ocamldoc --enable-debugger=no \ +- --disable-flat-float-array \ +- --prefix=$absprefix - make -j $mjobs world - make install - echo "k='$url'" >$absprefix/bin/ocamlc.past @@ -65,7 +58,7 @@ index 1588011..72117d9 100755 bocaml1() { grep -q "$3" $outd/ordered || { -@@ -224,7 +191,7 @@ bobjc() { +@@ -227,7 +192,7 @@ bobjc() { } && vecho "fresh $o" } @@ -74,7 +67,7 @@ index 1588011..72117d9 100755 cmd="(. $srcd/genconfstr.sh >$outd/confstruct.ml)" keycmd="digest $srcd/genconfstr.sh $outd/confstruct.ml" -@@ -278,7 +245,7 @@ for m in ml_gl ml_glarray ml_raw; do +@@ -281,7 +246,7 @@ for m in ml_gl ml_glarray ml_raw; do done libs="str.cma unix.cma" @@ -83,6 +76,3 @@ index 1588011..72117d9 100755 if $darwin; then mcomp=$(ocamlc -config | grep bytecomp_c_co | { read _ c; echo $c; }) clibs="$clibs -framework Cocoa -framework OpenGL" --- -2.19.2 - diff --git a/pkgs/applications/misc/mupdf/default.nix b/pkgs/applications/misc/mupdf/default.nix index 9219c4e2e42..ddd325214b2 100644 --- a/pkgs/applications/misc/mupdf/default.nix +++ b/pkgs/applications/misc/mupdf/default.nix @@ -14,24 +14,17 @@ let in stdenv.mkDerivation rec { - version = "1.14.0"; + version = "1.16.1"; pname = "mupdf"; src = fetchurl { url = "https://mupdf.com/downloads/archive/${pname}-${version}-source.tar.gz"; - sha256 = "093p7lv6pgyymagn28n58fs0np928r0i5p2az9cc4gwccwx4hhy4"; + sha256 = "0iz4ickj52fxjp8crg573kjrl4viq279g589isdpgpckslysf7g7"; }; patches = # Use shared libraries to decrease size - [( fetchpatch - { - name = "CVE-2018-18662"; - url = "http://git.ghostscript.com/?p=mupdf.git;a=patch;h=164ddc22ee0d5b63a81d5148f44c37dd132a9356"; - sha256 = "1jkzh20n3b854871h86cy5y7fvy0d5wyqy51b3fg6gj3a0jqpzzd"; - } - )] - ++ stdenv.lib.optional (!stdenv.isDarwin) ./mupdf-1.14-shared_libs.patch + stdenv.lib.optional (!stdenv.isDarwin) ./mupdf-1.14-shared_libs.patch ++ stdenv.lib.optional stdenv.isDarwin ./darwin.patch ; diff --git a/pkgs/applications/misc/noice/default.nix b/pkgs/applications/misc/noice/default.nix index db8139122ba..6cc5dc9066d 100644 --- a/pkgs/applications/misc/noice/default.nix +++ b/pkgs/applications/misc/noice/default.nix @@ -4,12 +4,12 @@ with stdenv.lib; stdenv.mkDerivation rec { pname = "noice"; - version = "0.6"; + version = "0.8"; src = fetchgit { url = "git://git.2f30.org/noice.git"; rev = "refs/tags/v${version}"; - sha256 = "03rwglcy47fh6rb630vws10m95bxpcfv47nxrlws2li2ljam8prw"; + sha256 = "0975j4m93s9a21pazwdzn4gqhkngwq7q6ghp0q8a75r6c4fb7aar"; }; configFile = optionalString (conf!=null) (builtins.toFile "config.def.h" conf); diff --git a/pkgs/applications/misc/nut/default.nix b/pkgs/applications/misc/nut/default.nix index 816918ca063..ec5ee031a5b 100644 --- a/pkgs/applications/misc/nut/default.nix +++ b/pkgs/applications/misc/nut/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, pkgconfig, neon, libusb, openssl, udev, avahi, freeipmi -, libtool, makeWrapper }: +, libtool, makeWrapper, nss }: stdenv.mkDerivation rec { name = "nut-2.7.4"; @@ -9,7 +9,7 @@ stdenv.mkDerivation rec { sha256 = "19r5dm07sfz495ckcgbfy0pasx0zy3faa0q7bih69lsjij8q43lq"; }; - buildInputs = [ neon libusb openssl udev avahi freeipmi libtool ]; + buildInputs = [ neon libusb openssl udev avahi freeipmi libtool nss ]; nativeBuildInputs = [ pkgconfig makeWrapper ]; diff --git a/pkgs/applications/misc/zathura/pdf-mupdf/default.nix b/pkgs/applications/misc/zathura/pdf-mupdf/default.nix index 2ebc640d683..d8c1364d395 100644 --- a/pkgs/applications/misc/zathura/pdf-mupdf/default.nix +++ b/pkgs/applications/misc/zathura/pdf-mupdf/default.nix @@ -2,7 +2,7 @@ , pkgconfig, zathura_core, cairo , gtk-mac-integration, girara, mupdf }: stdenv.mkDerivation rec { - version = "0.3.4"; + version = "0.3.5"; pname = "zathura-pdf-mupdf"; # pwmt.org server was down at the time of last update @@ -14,7 +14,7 @@ stdenv.mkDerivation rec { owner = "pwmt"; repo = "zathura-pdf-mupdf"; rev = version; - sha256 = "1m4w4jrybpjmx6pi33a5saxzmfd8rrym2k13jpd1fv543s17d9dy"; + sha256 = "0wb46hllykbi30ir69s8s23mihivqn13mgfdzawbsn2a21p8y4zl"; }; nativeBuildInputs = [ meson ninja pkgconfig ]; diff --git a/pkgs/applications/networking/browsers/chromium/browser.nix b/pkgs/applications/networking/browsers/chromium/browser.nix index 8bdb33ed5d2..ad7fa78527c 100644 --- a/pkgs/applications/networking/browsers/chromium/browser.nix +++ b/pkgs/applications/networking/browsers/chromium/browser.nix @@ -1,4 +1,4 @@ -{ stdenv, mkChromiumDerivation, channel }: +{ stdenv, mkChromiumDerivation, channel, enableWideVine }: with stdenv.lib; @@ -18,11 +18,6 @@ mkChromiumDerivation (base: rec { cp -vLR "$buildPath/locales" "$buildPath/resources" "$libExecPath/" cp -v "$buildPath/chrome" "$libExecPath/$packageName" - if [ -e "$buildPath/libwidevinecdmadapter.so" ]; then - cp -v "$buildPath/libwidevinecdmadapter.so" \ - "$libExecPath/libwidevinecdmadapter.so" - fi - mkdir -p "$sandbox/bin" cp -v "$buildPath/chrome_sandbox" "$sandbox/bin/${sandboxExecutableName}" @@ -67,7 +62,7 @@ mkChromiumDerivation (base: rec { description = "An open source web browser from Google"; homepage = http://www.chromium.org/; maintainers = with maintainers; [ bendlas ivan ]; - license = licenses.bsd3; + license = if enableWideVine then licenses.unfree else licenses.bsd3; platforms = platforms.linux; hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else []; timeout = 172800; # 48 hours diff --git a/pkgs/applications/networking/browsers/chromium/common.nix b/pkgs/applications/networking/browsers/chromium/common.nix index a3645e97e25..6d43c313cc0 100644 --- a/pkgs/applications/networking/browsers/chromium/common.nix +++ b/pkgs/applications/networking/browsers/chromium/common.nix @@ -24,7 +24,6 @@ # package customization , enableNaCl ? false -, enableWideVine ? false , useVaapi ? false , gnomeSupport ? false, gnome ? null , gnomeKeyringSupport ? false, libgnome-keyring3 ? null @@ -133,11 +132,12 @@ let ++ optional pulseSupport libpulseaudio ++ optional (versionAtLeast version "72") jdk.jre; - patches = optional enableWideVine ./patches/widevine.patch ++ [ + patches = [ ./patches/nix_plugin_paths_68.patch ./patches/remove-webp-include-69.patch ./patches/jumbo-sorted.patch ./patches/no-build-timestamps.patch + ./patches/widevine.patch # Unfortunately, chromium regularly breaks on major updates and # then needs various patches backported in order to be compiled with GCC. @@ -235,7 +235,7 @@ let use_gnome_keyring = gnomeKeyringSupport; use_gio = gnomeSupport; enable_nacl = enableNaCl; - enable_widevine = enableWideVine; + enable_widevine = true; use_cups = cupsSupport; treat_warnings_as_errors = false; diff --git a/pkgs/applications/networking/browsers/chromium/default.nix b/pkgs/applications/networking/browsers/chromium/default.nix index 3178e2595fc..f099ddbff73 100644 --- a/pkgs/applications/networking/browsers/chromium/default.nix +++ b/pkgs/applications/networking/browsers/chromium/default.nix @@ -2,6 +2,8 @@ , makeWrapper, ed , glib, gtk3, gnome3, gsettings-desktop-schemas , libva ? null +, gcc, nspr, nss, patchelfUnstable, runCommand +, lib # package customization , channel ? "stable" @@ -34,23 +36,76 @@ in let mkChromiumDerivation = callPackage ./common.nix { inherit enableNaCl gnomeSupport gnome gnomeKeyringSupport proprietaryCodecs cupsSupport pulseSupport - useVaapi - enableWideVine; + useVaapi; }; - browser = callPackage ./browser.nix { inherit channel; }; + browser = callPackage ./browser.nix { inherit channel enableWideVine; }; plugins = callPackage ./plugins.nix { - inherit enablePepperFlash enableWideVine; + inherit enablePepperFlash; }; }; + mkrpath = p: "${lib.makeSearchPathOutput "lib" "lib64" p}:${lib.makeLibraryPath p}"; + widevine = let upstream-info = chromium.upstream-info; in stdenv.mkDerivation { + name = "chromium-binary-plugin-widevine"; + + src = upstream-info.binary; + + nativeBuildInputs = [ patchelfUnstable ]; + + phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ]; + + unpackCmd = let + chan = if upstream-info.channel == "dev" then "chrome-unstable" + else if upstream-info.channel == "stable" then "chrome" + else if upstream-info.channel == "beta" then "chrome-beta" + else throw "Unknown chromium channel."; + in '' + mkdir -p plugins + ar p "$src" data.tar.xz | tar xJ -C plugins --strip-components=4 \ + ./opt/google/${chan}/libwidevinecdm.so + ''; + + doCheck = true; + checkPhase = '' + ! find -iname '*.so' -exec ldd {} + | grep 'not found' + ''; + + PATCH_RPATH = mkrpath [ gcc.cc glib nspr nss ]; + + patchPhase = '' + patchelf --set-rpath "$PATCH_RPATH" libwidevinecdm.so + ''; + + installPhase = '' + install -vD libwidevinecdm.so \ + "$out/lib/libwidevinecdm.so" + ''; + + meta.platforms = lib.platforms.x86_64; + }; + suffix = if channel != "stable" then "-" + channel else ""; sandboxExecutableName = chromium.browser.passthru.sandboxExecutableName; version = chromium.browser.version; + # This is here because we want to add the widevine shared object at the last + # minute in order to avoid a full rebuild of chromium. Additionally, this + # isn't in `browser.nix` so we can avoid having to re-expose attributes of + # the chromium derivation (see above: we introspect `sandboxExecutableName`). + chromiumWV = let browser = chromium.browser; in if enableWideVine then + runCommand (browser.name + "-wv") { version = browser.version; } + '' + mkdir -p $out + cp -R ${browser}/* $out/ + chmod u+w $out/libexec/chromium* + cp ${widevine}/lib/libwidevinecdm.so $out/libexec/chromium/ + # patchelf? + '' + else browser; in stdenv.mkDerivation { name = "chromium${suffix}-${version}"; inherit version; @@ -68,7 +123,7 @@ in stdenv.mkDerivation { outputs = ["out" "sandbox"]; buildCommand = let - browserBinary = "${chromium.browser}/libexec/chromium/chromium"; + browserBinary = "${chromiumWV}/libexec/chromium/chromium"; getWrapperFlags = plugin: "$(< \"${plugin}/nix-support/wrapper-flags\")"; libPath = stdenv.lib.makeLibraryPath ([] ++ stdenv.lib.optional useVaapi libva @@ -113,13 +168,7 @@ in stdenv.mkDerivation { ''; inherit (chromium.browser) packageName; - meta = chromium.browser.meta // { - broken = if enableWideVine then - builtins.trace "WARNING: WideVine is not functional, please only use for testing" - true - else false; - }; - + meta = chromium.browser.meta; passthru = { inherit (chromium) upstream-info browser; mkDerivation = chromium.mkChromiumDerivation; diff --git a/pkgs/applications/networking/browsers/chromium/patches/widevine.patch b/pkgs/applications/networking/browsers/chromium/patches/widevine.patch index 90a13928e3b..2de6024141d 100644 --- a/pkgs/applications/networking/browsers/chromium/patches/widevine.patch +++ b/pkgs/applications/networking/browsers/chromium/patches/widevine.patch @@ -1,16 +1,24 @@ -Minimal WideVine patch from Gentoo: +Description: enable widevine and set its version string to "undefined" +Author: Michael Gilbert <mgilbert@debian.org> +Author: Olivier Tilloy <olivier.tilloy@canonical.com> -https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium/files/chromium-widevine-r1.patch - -BTS: https://bugs.gentoo.org/show_bug.cgi?id=547630 - ---- a/third_party/widevine/cdm/stub/widevine_cdm_version.h -+++ b/third_party/widevine/cdm/stub/widevine_cdm_version.h -@@ -10,6 +10,7 @@ - - #include "third_party/widevine/cdm/widevine_cdm_common.h" - -+#define WIDEVINE_CDM_VERSION_STRING "unknown" - #define WIDEVINE_CDM_AVAILABLE +--- a/third_party/widevine/cdm/widevine_cdm_version.h ++++ b/third_party/widevine/cdm/widevine_cdm_version.h +@@ -11,5 +11,6 @@ + // If the Widevine CDM is available define the following: + // - WIDEVINE_CDM_VERSION_STRING (with the version of the CDM that's available + // as a string, e.g., "1.0.123.456"). ++#define WIDEVINE_CDM_VERSION_STRING "undefined" #endif // WIDEVINE_CDM_VERSION_H_ +--- a/chrome/common/chrome_content_client.cc ++++ b/chrome/common/chrome_content_client.cc +@@ -99,7 +99,7 @@ + // Registers Widevine CDM if Widevine is enabled, the Widevine CDM is + // bundled and not a component. When the Widevine CDM is a component, it is + // registered in widevine_cdm_component_installer.cc. +-#if BUILDFLAG(BUNDLE_WIDEVINE_CDM) && !BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT) ++#if !BUILDFLAG(ENABLE_WIDEVINE_CDM_COMPONENT) + #define REGISTER_BUNDLED_WIDEVINE_CDM + #include "third_party/widevine/cdm/widevine_cdm_common.h" // nogncheck + // TODO(crbug.com/663554): Needed for WIDEVINE_CDM_VERSION_STRING. Support diff --git a/pkgs/applications/networking/browsers/chromium/plugins.nix b/pkgs/applications/networking/browsers/chromium/plugins.nix index b356f809f03..a80210542c5 100644 --- a/pkgs/applications/networking/browsers/chromium/plugins.nix +++ b/pkgs/applications/networking/browsers/chromium/plugins.nix @@ -6,7 +6,6 @@ , fetchzip , patchelfUnstable , enablePepperFlash ? false -, enableWideVine ? false , upstream-info }: @@ -44,60 +43,6 @@ let echo ${toString quoted} > "''$${output}/nix-support/wrapper-flags" ''; - widevine = stdenv.mkDerivation { - name = "chromium-binary-plugin-widevine"; - - src = upstream-info.binary; - - nativeBuildInputs = [ patchelfUnstable ]; - - phases = [ "unpackPhase" "patchPhase" "installPhase" "checkPhase" ]; - - unpackCmd = let - chan = if upstream-info.channel == "dev" then "chrome-unstable" - else if upstream-info.channel == "stable" then "chrome" - else "chrome-${upstream-info.channel}"; - in '' - mkdir -p plugins - ar p "$src" data.tar.xz | tar xJ -C plugins --strip-components=4 \ - ./opt/google/${chan}/libwidevinecdm.so \ - ./opt/google/${chan}/libwidevinecdmadapter.so - ''; - - doCheck = true; - checkPhase = '' - ! find -iname '*.so' -exec ldd {} + | grep 'not found' - ''; - - PATCH_RPATH = mkrpath [ gcc.cc glib nspr nss ]; - - patchPhase = '' - chmod +x libwidevinecdm.so libwidevinecdmadapter.so - patchelf --set-rpath "$PATCH_RPATH" libwidevinecdm.so - patchelf --set-rpath "$out/lib:$PATCH_RPATH" libwidevinecdmadapter.so - ''; - - installPhase = let - wvName = "Widevine Content Decryption Module"; - wvDescription = "Playback of encrypted HTML audio/video content"; - wvMimeTypes = "application/x-ppapi-widevine-cdm"; - wvModule = "@out@/lib/libwidevinecdmadapter.so"; - wvInfo = "#${wvName}#${wvDescription};${wvMimeTypes}"; - in '' - install -vD libwidevinecdm.so \ - "$out/lib/libwidevinecdm.so" - install -vD libwidevinecdmadapter.so \ - "$out/lib/libwidevinecdmadapter.so" - - ${mkPluginInfo { - flags = [ "--register-pepper-plugins=${wvModule}${wvInfo}" ]; - envVars.NIX_CHROMIUM_PLUGIN_PATH_WIDEVINE = "@out@/lib"; - }} - ''; - - meta.platforms = platforms.x86_64; - }; - flash = stdenv.mkDerivation rec { pname = "flashplayer-ppapi"; version = "32.0.0.255"; @@ -140,6 +85,5 @@ let }; in { - enabled = optional enableWideVine widevine - ++ optional enablePepperFlash flash; + enabled = optional enablePepperFlash flash; } diff --git a/pkgs/applications/networking/browsers/chromium/upstream-info.nix b/pkgs/applications/networking/browsers/chromium/upstream-info.nix index 14799e9f96c..df2ce798f1f 100644 --- a/pkgs/applications/networking/browsers/chromium/upstream-info.nix +++ b/pkgs/applications/networking/browsers/chromium/upstream-info.nix @@ -1,9 +1,9 @@ # This file is autogenerated from update.sh in the same directory. { beta = { - sha256 = "0m7xdpi1f2a33csd7bsp91g5klz0hmr83ksfwsd2fki3iipvfs4w"; - sha256bin64 = "1b4cyf4v55sy52mxxl8d70abg5ck5k45jaqdjsjw7dvh3s2x4bwp"; - version = "77.0.3865.42"; + sha256 = "12cp24h93b48pwfywf5b6qvjdlhxrhp87qdaqbfcn6g787r2z5gb"; + sha256bin64 = "0d9w869qqwbmw3qjvxkfm37i7dvrgmrwm5y96sm1dg2jnxqj4bdz"; + version = "77.0.3865.75"; }; dev = { sha256 = "0x5r6xqwiggwyzbinm252xc1n3f9r7cmmzj6assi4v1nsispdh2k"; @@ -11,8 +11,8 @@ version = "78.0.3887.7"; }; stable = { - sha256 = "0hajwjf7swlgh1flpf8ljfrb2zhmcpzvrigvvxqd36g3nm04cknm"; - sha256bin64 = "0hdsla8i3q0zbczia64ghqsf420alcc31xdishx1sv48x3rlrxkk"; - version = "76.0.3809.132"; + sha256 = "12cp24h93b48pwfywf5b6qvjdlhxrhp87qdaqbfcn6g787r2z5gb"; + sha256bin64 = "1wp5g09czyslkkhw3nhbp39fxfcz0pprsgj8h0aggghpdbvzph3d"; + version = "77.0.3865.75"; }; } diff --git a/pkgs/applications/networking/browsers/firefox/packages.nix b/pkgs/applications/networking/browsers/firefox/packages.nix index e1d4014c83b..3e8cf4d66b9 100644 --- a/pkgs/applications/networking/browsers/firefox/packages.nix +++ b/pkgs/applications/networking/browsers/firefox/packages.nix @@ -70,11 +70,11 @@ rec { firefox-esr-60 = common rec { pname = "firefox-esr"; - ffversion = "60.8.0esr"; + ffversion = "60.9.0esr"; src = fetchurl { url = "mirror://mozilla/firefox/releases/${ffversion}/source/firefox-${ffversion}.source.tar.xz"; - sha512 = "0332b6049b97e488e55a3b9540baad3bd159e297084e9a625b8492497c73f86eb3e144219dabc5e9f2c2e4a27630d83d243c919cd4f86b7f59f47133ed3afc54"; + sha512 = "4baea5c9c4eff257834bbaee6d7786f69f7e6bacd24ca13c2705226f4a0d88315ab38c650b2c5e9c76b698f2debc7cea1e5a99cb4dc24e03c48a24df5143a3cf"; }; patches = [ diff --git a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix index 739315917d4..563c0e751c8 100644 --- a/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix +++ b/pkgs/applications/networking/browsers/tor-browser-bundle-bin/default.nix @@ -95,18 +95,12 @@ let srcs = { x86_64-linux = fetchurl { - urls = [ - "https://github.com/TheTorProject/gettorbrowser/releases/download/v${version}/tor-browser-linux64-${version}_${lang}.tar.xz" - "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz" - ]; + url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz"; sha256 = "00r5k9bbfpv3s6shxqypl13psr1zz51xiyz3vmm4flhr2qa4ycsz"; }; i686-linux = fetchurl { - urls = [ - "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz" - "https://github.com/TheTorProject/gettorbrowser/releases/download/v${version}/tor-browser-linux32-${version}_${lang}.tar.xz" - ]; + url = "https://github.com/TheTorProject/gettorbrowser/releases/download/v${version}/tor-browser-linux32-${version}_${lang}.tar.xz"; sha256 = "1nxvw5kiggfr4n5an436ass84cvwjviaa894kfm72yf2ls149f29"; }; }; diff --git a/pkgs/applications/networking/hpmyroom/default.nix b/pkgs/applications/networking/hpmyroom/default.nix new file mode 100644 index 00000000000..b0f21f6f7e0 --- /dev/null +++ b/pkgs/applications/networking/hpmyroom/default.nix @@ -0,0 +1,58 @@ +{ mkDerivation, stdenv, lib, fetchurl, rpmextract, autoPatchelfHook , libuuid +, libXtst, libXfixes, glib, gst_all_1, alsaLib, freetype, fontconfig , libXext +, libGL, libpng, libXScrnSaver, libxcb, xorg, libpulseaudio, libdrm +}: +mkDerivation rec { + pname = "hpmyroom"; + version = "11.1.0.0508"; + + src = fetchurl { + url = "https://www.myroom.hpe.com/downloadfiles/${pname}-${version}.x86_64.rpm"; + sha256 = "1j7mzvf349yxb42m8syh73gpvil01hy1a2wrr0rdzb2ijfnkxyaa"; + }; + + nativeBuildInputs = [ + rpmextract autoPatchelfHook + ]; + + buildInputs = [ + libuuid libXtst libXScrnSaver libXfixes alsaLib freetype fontconfig libXext + libGL libpng libxcb libpulseaudio libdrm + glib # For libgobject + stdenv.cc.cc # For libstdc++ + xorg.libX11 + ] ++ (with gst_all_1; [ gstreamer gst-plugins-base ]); + + unpackPhase = '' + rpmextract $src + ''; + + installPhase = '' + runHook preInstall + + mv usr $out + + runHook postInstall + ''; + + qtWrapperArgs = [ + "--prefix QT_XKB_CONFIG_ROOT : '${xorg.xkeyboardconfig}/share/X11/xkb'" + ]; + + postFixup = '' + substituteInPlace $out/share/applications/HP-myroom.desktop \ + --replace /usr/bin/hpmyroom hpmyroom \ + --replace Icon=/usr/share/hpmyroom/Resources/MyRoom.png Icon=$out/share/hpmyroom/Resources/MyRoom.png + + ln -s ${libpng}/lib/libpng.so $out/lib/hpmyroom/libpng15.so.15 + ''; + + meta = { + description = "Client for HPE's MyRoom web conferencing solution"; + maintainers = with lib.maintainers; [ johnazoidberg ]; + license = lib.licenses.unfree; + homepage = "https://myroom.hpe.com"; + # TODO: A Darwin binary is available upstream + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/networking/ike/default.nix b/pkgs/applications/networking/ike/default.nix index 7953f35507d..3baa1352a80 100644 --- a/pkgs/applications/networking/ike/default.nix +++ b/pkgs/applications/networking/ike/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, cmake, openssl, libedit, flex, bison, qt4, makeWrapper +{ stdenv, fetchurl, fetchpatch, cmake, openssl, libedit, flex, bison, qt4, makeWrapper , gcc, nettools, iproute, linuxHeaders }: # NOTE: use $out/etc/iked.conf as sample configuration and also set: dhcp_file "/etc/iked.dhcp"; @@ -8,14 +8,25 @@ # so I'm sticking with 3.4 stdenv.mkDerivation rec { - name = "ike-2.2.1"; + pname = "ike"; + version = "2.2.1"; src = fetchurl { - url = "https://www.shrew.net/download/ike/${name}-release.tgz"; + url = "https://www.shrew.net/download/ike/${pname}-${version}-release.tgz"; sha256 = "0fhyr2psd93b0zf7yfb72q3nqnh65mymgq5jpjcsj9jv5kfr6l8y"; }; - buildInputs = [ cmake openssl libedit flex bison qt4 makeWrapper nettools iproute ]; + patches = [ + # required for openssl 1.1.x compatibility + (fetchpatch { + name = "openssl-1.1.0.patch"; + url = "https://aur.archlinux.org/cgit/aur.git/plain/openssl-1.1.0.patch?h=ike&id=3a56735ddc26f750df4720f4baba0728bb4cb458"; + sha256 = "1hw8q4xy858rivpjkq5288q3mc75d52bg4w3n30y99h05wik0h51"; + }) + ]; + + nativeBuildInputs = [ cmake flex bison makeWrapper ]; + buildInputs = [ openssl libedit qt4 nettools iproute ]; configurePhase = '' mkdir -p $out/{bin,sbin,lib} diff --git a/pkgs/applications/networking/instant-messengers/dino/default.nix b/pkgs/applications/networking/instant-messengers/dino/default.nix index 8de098b85e7..e6e58994473 100644 --- a/pkgs/applications/networking/instant-messengers/dino/default.nix +++ b/pkgs/applications/networking/instant-messengers/dino/default.nix @@ -15,13 +15,13 @@ }: stdenv.mkDerivation { - name = "dino-unstable-2019-03-07"; + name = "dino-unstable-2019-09-12"; src = fetchFromGitHub { owner = "dino"; repo = "dino"; - rev = "ff6caf241c4d57d3ef124a8b7c3144a09f320ea0"; - sha256 = "1gjxfnywlypi3slvxb91b2mycrsqjinmafnkkngahyikr7gmqgnf"; + rev = "c8f2b80978706c4c53deb7ddfb8188c751bcb291"; + sha256 = "17lc6xiarb174g1hgjfh1yjrr0l2nzc3kba8xp5niwakbx7qicqr"; fetchSubmodules = true; }; diff --git a/pkgs/applications/networking/instant-messengers/slack/dark-theme.nix b/pkgs/applications/networking/instant-messengers/slack/dark-theme.nix index f36e32731be..903d8e60d6d 100644 --- a/pkgs/applications/networking/instant-messengers/slack/dark-theme.nix +++ b/pkgs/applications/networking/instant-messengers/slack/dark-theme.nix @@ -1,13 +1,13 @@ { stdenv, fetchgit }: stdenv.mkDerivation rec { - rev = "779bf26f7d9754879fbc1e308fc35ee154fd4b97"; - version = "2019-09-07"; + rev = "f760176c6e133667ce73aeecba8b0c0eb8822941"; + version = "2019-09-11"; pname = "slack-theme-black"; src = fetchgit { inherit rev; url = "https://github.com/laCour/slack-night-mode"; - sha256 = "0p3wjwwchb0zw10rf5qlx7ffxryb42hixfrji36c57g1853qhw0f"; + sha256 = "1kx8nx7mhrabs5wxqgvy86s5smy5hw49gv6yc95yxwx6ymwpgbzj"; }; dontUnpack = true; diff --git a/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix b/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix index d8f5e58d9fe..2de09fc73f4 100644 --- a/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix +++ b/pkgs/applications/networking/mailreaders/thunderbird-bin/release_sources.nix @@ -1,615 +1,615 @@ { - version = "68.0"; + version = "68.1.0"; sources = [ - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/ar/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/ar/thunderbird-68.1.0.tar.bz2"; locale = "ar"; arch = "linux-x86_64"; - sha512 = "4fad3c7c4099f70253bfee450bcefe458bec61430720fcadde1fe8a1cbb2e62a18d9c55943f850c57f8d788c973774e24590823086cfacbbb2ccd8a99ce4faae"; + sha512 = "b9bb22bdbe013358c03e804e3c51ad387dca503b9e0074db70494eb3f331d72bd8679db929972e75b39f2464d384753bcab9947d1a843a69167d7b3706952c35"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/ast/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/ast/thunderbird-68.1.0.tar.bz2"; locale = "ast"; arch = "linux-x86_64"; - sha512 = "aac850773381d7fdb4d50fafe670449301f073f7388f92a1ca38d9b7256ffcd244b63e9fc0ff2f8ef5ccd853b97016b7e05eb751be1bdc8df9623481f15d55e6"; + sha512 = "e00382241343bbd8a86e31dfcf5bbb060b46e5db6211cfa54c7192361353e2c4fe3d0ad3f4e0319ec1a0dc1f4590b7bc0271e5658bc468986d8e27a64d9924da"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/be/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/be/thunderbird-68.1.0.tar.bz2"; locale = "be"; arch = "linux-x86_64"; - sha512 = "6521d818984bbfba195e847735c1228ff637d3079cff1f5a461ac20a079d325adfc1d7b2eca54f63e584a5cbd2007cef42a625597276a1810158931335f09cd9"; + sha512 = "f043c8aa5dac0d5e2f9da628d6659f654cc39726677424e4b5e5005e97bf202575f569ebdee346d37cc8d4d59da188e6cfe1bd6bf7df1acafe26b489242b4a9f"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/bg/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/bg/thunderbird-68.1.0.tar.bz2"; locale = "bg"; arch = "linux-x86_64"; - sha512 = "a0a738b6877225a5b98691d53a8f4a4bf575472a0d5feb8b77a67cd1fc9951772f1ab507b7ba460c0b62b87ab476c5c94130cbe7275692e3a99e5d2ef0bd89bd"; + sha512 = "61fcf864145fb4fd4a05bff47bd23a7be8444f9d067eec246399c3a7ce48db8744ba4a9cb42e28a215a5bb1b336a57c51d1a32e6564f42c8b9fd4dba5f629d9f"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/br/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/br/thunderbird-68.1.0.tar.bz2"; locale = "br"; arch = "linux-x86_64"; - sha512 = "58d21d9e55abed644eb16ba98a5fb3277e0a31b935d279b09745262952895c2c2aed31817e6157410137ff82fc5d242b64268f646c3b7b691c55c5f3ea36e0e6"; + sha512 = "1cdc9b2a8ee82bb087a51ac013644ff3da5f1e161fca23fb24feae8076cef6c5aff5316f83a8ecfa4f08c3a8642501a333d3ef95b46b8f899ce78b79d027af4c"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/ca/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/ca/thunderbird-68.1.0.tar.bz2"; locale = "ca"; arch = "linux-x86_64"; - sha512 = "cd401259f2cc4ec71ff9d936a1f2f64a064afafed2e305bb359f79eddf1159cd6a7c84ce54cde6be94f6acd295dbedf54017d9f4592ee3637eea00496c7cfbf1"; + sha512 = "1b73ca87f3067ec2a84990c7c58060b11286dd653f4b8b4c18a44f5540ea195d25f995539de39b6e1de6cbbe54c890bf30f6d88157e000e30c69f4d32a4ae8f0"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/cak/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/cak/thunderbird-68.1.0.tar.bz2"; locale = "cak"; arch = "linux-x86_64"; - sha512 = "45ea4af30ff93500d1671c6a0eeda993692b7204a7504a91ad30bfd5155add5af902205240fd62f80abe339224e686473f2d13f466ba96269347207ed3f628b5"; + sha512 = "1b2ec85786a842c7554f52b1ff72c4e5611a76bca94c4b8e9a79604d6b85d7f2deba906bbeca355dfd0c5a6c241d9bd397f4e0dfebd802cdb0c35162a02fd879"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/cs/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/cs/thunderbird-68.1.0.tar.bz2"; locale = "cs"; arch = "linux-x86_64"; - sha512 = "9f81f92a3b1710d006cda79f1b92923c1ea637a24654bd622af9be1f53a0024c5daa77619443514c9e607cb62f96403f5b7f426b3692227c0b56d1b14f51ca97"; + sha512 = "69df6542c5037815d3a80be764eaa809dd351f75417e4362a258df5e17e36aef6d8f8653429f4218f196ff096252e0304c2cca1cccbf8693d119bc05f1072067"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/cy/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/cy/thunderbird-68.1.0.tar.bz2"; locale = "cy"; arch = "linux-x86_64"; - sha512 = "c90467a78bc82667d974b1e94227b7d4185878654188967d97c11e419ec7a03e4e5e3636466a0b6d35beaa98b717a26341e3a652c3b21083ad8ad0b23f063ed1"; + sha512 = "5dc63d2746475f0045f7749e45bbc3f755b187521b0ca877ffab9386bb1bbe9b4fd66f9cc6bdac516ba591e71d71f02a75b5c965a610a3efbee3b59815d8deda"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/da/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/da/thunderbird-68.1.0.tar.bz2"; locale = "da"; arch = "linux-x86_64"; - sha512 = "f49bd5689d2a4dd311b22a23da9f26559685f1c4663eb1e482b45b79544ab4401a17701f33b6ad083e7a8983185fcb16fca4c8026138f24be495c6cbb6401488"; + sha512 = "89427a2b66dbd71cdfbb299a14ce7ed61ab4836e473854ea8b2ec522de64870f8886f6ae86428c9b1c86733aaa4ac7c732a708fccdd70d3e112d2f651c0dc762"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/de/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/de/thunderbird-68.1.0.tar.bz2"; locale = "de"; arch = "linux-x86_64"; - sha512 = "579d979cfa0bbe50fd0bbf0d15b38d90579bc065b488a2e9d4e3f18f505e71c50225d92185559578146097110760ed3807e1aefad4862d99e247447478d6bc42"; + sha512 = "34130ec994f6ee6a407313ccc61d43b0375046f59f75d4fb619776d5c880993802c16a3b8ec28dc7053b4ae89f91f1c2046da7d884d150aa7c3b65edd1650b21"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/dsb/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/dsb/thunderbird-68.1.0.tar.bz2"; locale = "dsb"; arch = "linux-x86_64"; - sha512 = "8d16bf47d368a670cadb6a2655933d5b49a796272f7dafd948cac95a2ae541561a38fa418cd4ed0c4aa79ef63a441ee769eeb2a071734abf2cc1ba243d4f3ba5"; + sha512 = "0b9c02a1e31f8f3120fb9ed520c53505dc247440ba2e189cbc58569be5ce6e0c33de220ebda17754338aa680cf5c8aac3ad7f5da14e0cbefc29f32db2446618a"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/el/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/el/thunderbird-68.1.0.tar.bz2"; locale = "el"; arch = "linux-x86_64"; - sha512 = "579b9114af9fda86e79e6812946da858945e2034ed2f00e4244724ecdd680b7db5601a4d573b530dc15207caac9245f6883343684eb43f3ae2abb64853c0b54f"; + sha512 = "1d8e2efc2c9a7375a2ce0f2137165756800a680209d18612420581963f13774fc7780ac0ccda24a485996531d1e82e027b42a671f1c8fce5e8ccf0887f72ac6f"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/en-GB/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/en-GB/thunderbird-68.1.0.tar.bz2"; locale = "en-GB"; arch = "linux-x86_64"; - sha512 = "f7caed8c3b49714e4449ef971ed1a21e40f28625c84e9342f63e5f73743689ee2c0e9ed4845f6667bd22732c62bd707db425f22a5c074dff8622cc4536ba9c29"; + sha512 = "79684a833afe5d1025088d6f91e023c81832e9df83751926c5d9bc05fecb7f53d6efd096f55d65d45fa07309497cf5bed2e3b00cc4a80cc1e4ed2a0fe44d02a8"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/en-US/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/en-US/thunderbird-68.1.0.tar.bz2"; locale = "en-US"; arch = "linux-x86_64"; - sha512 = "257528761f0eca38528ded4b31329886093418f562aa2fac73b3a5bedda51fe80b34758c10afae1735cf37b37a86413dcf08642aecb1e8bea1fb6b0b94ade5c7"; + sha512 = "7a29cf0a238e44a2051b53e5476bc8f622dffd088251b66d951ad6874fba5fba180f440c80c7d5ae154c688d3e29fcc6c889f0031d81a018b7fd1dfd53f112a5"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/es-AR/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/es-AR/thunderbird-68.1.0.tar.bz2"; locale = "es-AR"; arch = "linux-x86_64"; - sha512 = "70a10e329b1031a2fd2ffb2b60459f0238ff3f5e5d80533f4be6cb22ae77692ec079ca3e146bd9a59edd09c266cec92d922a18ba45f8626a4bd44e290d3c0927"; + sha512 = "d9d62f94af40ba69240b792b3ef2d93efef20b01b4289e992f7d1192147029574f86fa21aed5ad54489d1e5ec1f3b80cd9601e71e2ba9c903582ccd7aed278a8"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/es-ES/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/es-ES/thunderbird-68.1.0.tar.bz2"; locale = "es-ES"; arch = "linux-x86_64"; - sha512 = "a03098ad7d83b86cd316c56b69589370fb8bad041b93f90f61514b04e3d0e78385f779ed715c6e22e45597d1bf03676046cbc1eae7896bb2a309af3683c8bd1e"; + sha512 = "d720320494b2c8431004e0d1ac24ff8fef83bc0977f44653d0fdab99fbc9a1aee6d5aecd7cbf6002e3746d04156f47aeb57367f2b30f4690efba36c3297fbeb0"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/et/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/et/thunderbird-68.1.0.tar.bz2"; locale = "et"; arch = "linux-x86_64"; - sha512 = "44efeaf030580dd7b55770627678808e34d689e85191852c2e5fcb223a0fdd0e5386f21f03524d0983aeded7f8ed99382ff2c372c8c5a1fdfe218bd5b10ccd80"; + sha512 = "8d9ba13604fab4eb9a3dec8894b04d52f9677d5f82695512680ff03740a66e96786f69476071741c8086a09070fd03786e8fae7f94bb3bec9075331fe4dc144b"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/eu/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/eu/thunderbird-68.1.0.tar.bz2"; locale = "eu"; arch = "linux-x86_64"; - sha512 = "c670be5932d7e8bea28cffda7c119cfdfd5823f76b2c97251ec23ec16e420a8b7feb5f2251d89750b956d3bf3baff5d17393c05d8c265d0a98cc3faea8f85735"; + sha512 = "e40110a94b3d7fb42707287dc695ea09b082fa3262d05b39a0c09002c32722630711f1b0131441c919b23130ed133338239060726cfc9d6c0b49822558081313"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/fi/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/fi/thunderbird-68.1.0.tar.bz2"; locale = "fi"; arch = "linux-x86_64"; - sha512 = "36aa0b47e9b5d91fbc812a3d63503924a8ca227d7b7084c1159419092b17da9c1b6e89fa046c636dbcff7776f9a1d8465e660b47f1753505f0d2eb85da9c3a7a"; + sha512 = "d8778ddba26f544a4721b9118ce5726b04fdf09758272b35ca16c14aea61d0b8271888344e742feb4d4e758182e97b01758acd53ad622a66117e3eb0d4a6d336"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/fr/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/fr/thunderbird-68.1.0.tar.bz2"; locale = "fr"; arch = "linux-x86_64"; - sha512 = "b1e7d345d3dd38725227b5e09c4f3cfcf29ed3a98b0580fbf6ae1ecab4414d09e307423495b75769a8d2ee3ab4700cd6eba3d95ce05612e1d8290d3f5a3ba988"; + sha512 = "2cd546d40bedf09b58703b0b11a5c9349d702540ae714942e0152a19cbecee51f37c7e217fadfc719ecfebf914f9ffad6b3070bb6471d395e8f5ff8ada754551"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/fy-NL/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/fy-NL/thunderbird-68.1.0.tar.bz2"; locale = "fy-NL"; arch = "linux-x86_64"; - sha512 = "4065a083f49006dacf64f084c1bf26c4c1b8d53bca7eba7a56d66bb035eaae2c4528687c5c1e2213f92adbba17ff92eb54f897d3b0ef6d27b8effbee66ca555b"; + sha512 = "03f52224f145917f64e8962b68bcf3810543b5bf0508dca7965c5a385c4f87bc7d236dac217594fdd2a10afe31da8aadc674eaf7b226e189b598011a8b9e223a"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/ga-IE/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/ga-IE/thunderbird-68.1.0.tar.bz2"; locale = "ga-IE"; arch = "linux-x86_64"; - sha512 = "2ae9a0860513e90d1742e5c17220b2367e61273eba04738cd29e9ab497b86f9a1d78b38b21da84b1f214f3368ee114d376b05eabe0aac9a1ec07ca6a4b399070"; + sha512 = "931257466ce7134b9852c2627f34efebc031b3dfc9fb7b5e344665da7fa52ac1fcd12a8848fd9a264a900e98ee3383d3ee6c251de58c1432127a8ce8f1c100e1"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/gd/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/gd/thunderbird-68.1.0.tar.bz2"; locale = "gd"; arch = "linux-x86_64"; - sha512 = "d2315aca9d8e5bb35b21cab46a48e51f09200b056da2682201c32eb4fd3d0379a24a6926ebcf11e9c70d70fd20152fc24d5197a78cdb3c8ea3cc2399d784b463"; + sha512 = "ee3573fe9af5fae39aa053061ef82207ae6669e6764637f6ddef5f8ee3cebf362dfecf5cf5e9e208392f3fe79a0c1a56aba28f372e2e279b33a1f1e3a58851f3"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/gl/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/gl/thunderbird-68.1.0.tar.bz2"; locale = "gl"; arch = "linux-x86_64"; - sha512 = "52d9210e857c1b6cb665a2ffa71cfa5e67c3718b210e2b4b42839d8f25987170f1603fa55d324003a4be821ba74093ff92d632e688e44b87ebf51dafd02f69a2"; + sha512 = "73ba3965d522aac8f9d5af87856a7e2f71cb7ed850f240be56eab9426f91e5356810a12da7cb91bc223cb14eeae3ecb89a2afeca48641ce4debefdaed05aeed6"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/he/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/he/thunderbird-68.1.0.tar.bz2"; locale = "he"; arch = "linux-x86_64"; - sha512 = "e7b5a16950be233fe8a49152184270a901bdb4bcc14769401d4b5a21fd2a3ab9d395ed8f6b61081330386723725252fceff09bf9fdde3a71135a98d8ae45089b"; + sha512 = "abd4f47d571037c4340dd3118a517f3421a3e3597efa1ad7ab14cf537d4b4e226144beb0a6c54a45ec272ab428ee8ed95083d31554ef2aa0022712dd832a1585"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/hr/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/hr/thunderbird-68.1.0.tar.bz2"; locale = "hr"; arch = "linux-x86_64"; - sha512 = "1ed224dc0864009edc6389f9b3b063f56b15be982c2e2915f1a2f773bfc78e6b81ec0ab02e03f7ade08f47260be597003f8119116576f4fe5dd490e85cd3d4ab"; + sha512 = "32a18d8666fc2b7566807a010d94bf5503b375c5330687aa58efc2bc6464e4f910947ea513a6ebb6b7eadef0e552138a5349583e6894b3166ef6f8d53d5cf67b"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/hsb/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/hsb/thunderbird-68.1.0.tar.bz2"; locale = "hsb"; arch = "linux-x86_64"; - sha512 = "f4bcd8a199bafd544687b1e890694dac2b598d4fd79818ab19441ae9be579a9928fd8c7fbae43e322fced15ff39314fbc88be94ce2fe12b5d2ec2ba003a219a3"; + sha512 = "58794aecdb5f3824e94f2bde4e4080d4922648bac632cfdffbc5304329af64f9e5ef01fc587c4e19e88f206004cc4254503513d7bfddecdb6778de89e4ca6bc5"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/hu/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/hu/thunderbird-68.1.0.tar.bz2"; locale = "hu"; arch = "linux-x86_64"; - sha512 = "28223aec237fce2f07b0c3b454a8339bbd2f195d6e263c5a5723e04bd5df1128d58a6bc6c7275cdbeefd5161a405a2d6340303faa79d9330abd0e70de9facbfb"; + sha512 = "c7881770fc75a6b1eecc5c481e2de134a241b7a497e19ff2abf08aaecf65006f054090a53b028202becf7776d3939742fa71156e6761f981ff7a00ca0d1d7d3f"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/hy-AM/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/hy-AM/thunderbird-68.1.0.tar.bz2"; locale = "hy-AM"; arch = "linux-x86_64"; - sha512 = "d7dea23905f8bc8dfde92082f90278b76477eb3036c7fc4abe656e37af9d389d37f3b166492df210eeab03750d85cbcaf1340aaa26ab723ca1b70299b4a64ab6"; + sha512 = "80f5fd19da8e07a6d40c19c645eb8fd6964f9904cd14df36374170c4d395146d168728953d1619965f04b3f2295df3d379650e97f8320587816ee088e2f17a9e"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/id/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/id/thunderbird-68.1.0.tar.bz2"; locale = "id"; arch = "linux-x86_64"; - sha512 = "f55ad81a1dc80838a9ab045899e0f16bb077d05d73119705f820f6fe8c8c7a550e05cc68cb7ca0aa8861cbd70bc9f061ba51a4749db6c37d90e7e7bda5dcccdf"; + sha512 = "efffdd32086ca57e93b1ebcb40484a3c2243d6b088c70d7b20bcdb38925e7fb64be4446c98980a53738f54dadb54a2d17016adc69bd2a47a9719bb7bb982f729"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/is/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/is/thunderbird-68.1.0.tar.bz2"; locale = "is"; arch = "linux-x86_64"; - sha512 = "503c236102a15428e41a21b458ecc29986abff4e434f4e26ec9741b2facf39a8fc2ae9dff5aeb32fe3c9ca0dcb6e914a2acf229ae9caecdc4f064380f126ecf7"; + sha512 = "277d1137675c6304b28f43273c5a3fbcdf0d2188cbaa38911d784df98b3429eb6d2667b818a292e4c3bd4019b2b682463c2d01faa0a034cb4fc1dd49ba8aab33"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/it/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/it/thunderbird-68.1.0.tar.bz2"; locale = "it"; arch = "linux-x86_64"; - sha512 = "51a736932baa5c810a29de46eba64b0fcd2703da38ba9449b6b06a9412562e80853367416c5b4d6c6834eb7a2186f434e426099ede56d9342860e4f3561455eb"; + sha512 = "6932697d769f98dcd32f3dcda57dfa154314e29bfd2c1b11a2b9a8aeb8395f00fdb0d1c71b8e9d405d1540cde21547a910a55024b799e270759d8638a3d11512"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/ja/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/ja/thunderbird-68.1.0.tar.bz2"; locale = "ja"; arch = "linux-x86_64"; - sha512 = "7a00080835155d301f65a35684d81f8e3a3be23d927d939da84a2a887057bca0b75d5b580a004b4f797af504a6812f71951bc3c75ccb24dad60b6cca770cc7a1"; + sha512 = "034021e89c471429367807f04d79dbe877d0ebc94f584fa6c0bec3a29f279f1d6dfc85f709b26e9d11c8ebcc1f42adb9a458137c032a73ae2b69f7238d31ce76"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/ka/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/ka/thunderbird-68.1.0.tar.bz2"; locale = "ka"; arch = "linux-x86_64"; - sha512 = "eaf67c64275495fcb08aca63953406cd7815ec356ee0a1edca8a5e8dacd924a9c11e35dbe4ad17a1617199a5f66489bb553a7a5177eb629223b49a9adccff803"; + sha512 = "7af1caeda9babac2a4c9b456233e86be32bcd14b6dd81cc18a1874dafe86c5b80099d0ce388a70fe6e74bb7b0d00d3b7ce810ffcbae143eadf6d8c4367567c27"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/kab/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/kab/thunderbird-68.1.0.tar.bz2"; locale = "kab"; arch = "linux-x86_64"; - sha512 = "9432bbba0965b6da04495b79ef4db3bdbe69476b20650b4d6407d921cf07d09950368f0c13211ea6743b621d486bf71dce0e60d8ceefd82b48a8f2581a3fd7ee"; + sha512 = "d8e7e7d423f36d40ce05cf1378278c47049fca0ba415466028dd821b12970fb78fbadfbb7b7390ec446aede490f07f979b94ef890a43a710e3a1f66a0c68937a"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/kk/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/kk/thunderbird-68.1.0.tar.bz2"; locale = "kk"; arch = "linux-x86_64"; - sha512 = "9bfb99694bcf1227162607e2b674abb00343e4da3876999430d6014cbd4f4aa6c6e9ddca7c7f3b144d101c1a5a6d38772e3750f5feb41d1f304b89a8c1e6ec15"; + sha512 = "339c8e86693a34c8a2da5e47924e545f0fa55d5314db73c6bb23df3eabed29dd6cf47662a8c4e43c381ede5098aba72887739993b4e71db75e41de3d1d777c3a"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/ko/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/ko/thunderbird-68.1.0.tar.bz2"; locale = "ko"; arch = "linux-x86_64"; - sha512 = "fd260740ccd74afae7af664775954acfd176b47176f48b5300f11bd77bc31205d0bbc2d06a701486e9742ffb38ad4aa2b253041b9d9518a4b9c7dbbe41aca264"; + sha512 = "ba80df01778f8fa95dd32bf0af55afe7fa828a489c4682e6a8891636281031170b9fff77ae4f2e4bbaae9124946b0429e55bbed741973d80da868d94e29991e8"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/lt/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/lt/thunderbird-68.1.0.tar.bz2"; locale = "lt"; arch = "linux-x86_64"; - sha512 = "fb7a7b6d0c7d58d13b3ec20c8176ee793cac5c53bf849e3b3c4aaeff0f3e897cc35e61a9dfa4055c691fd56f280f7b31e04999922c29ecc89294ea6eeac16cd3"; + sha512 = "32e93ec3203b70c2dced59a376bf7379879b5361f55a396d533e1f10727482b357344c9890864279eff9aa6d75feb1b36a67f2293c51d3a3222183f62c51e477"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/ms/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/ms/thunderbird-68.1.0.tar.bz2"; locale = "ms"; arch = "linux-x86_64"; - sha512 = "7490a8169079569143c63f85e7da299d28ea423fb95265e2e86ec724ff0da641e24a2e9ea612d180d523973522f40c250bfd56e66ee39b28cb9acf57f6be6831"; + sha512 = "29190352e1bbfe30b1e98d2a7fa20268488d82aefbdb4de1f8c2e197ed9f196be8256050f48d71ec6475b707d93d0570002fb175cd88fac89aca5e7140a7cbfe"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/nb-NO/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/nb-NO/thunderbird-68.1.0.tar.bz2"; locale = "nb-NO"; arch = "linux-x86_64"; - sha512 = "7256820ea97851319e51616f6eb45617983e76e74b46ae62a02e22d13e2dd6abd590fd265aa6c88ac14b2f0276219580b6b9fbd956f1eaa38e6a93329b9c9621"; + sha512 = "8e076d0967b0b79ac2cc9ade63e1bea4d27db1c050f792f1d1da01758a576fad884fdda32a02d58d45cf4c615f38c44bebc80c6e864ee076212f280398602892"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/nl/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/nl/thunderbird-68.1.0.tar.bz2"; locale = "nl"; arch = "linux-x86_64"; - sha512 = "00f32145c861abd8f151d7840d0f01eb9d4190df65e5a179f999f3149477f2de7f796782eb7ef912fcbec005d65c76974185d1c0105dea862cbc22c821bc906d"; + sha512 = "7bee338542f949d86700d9b67d26c059232ba96cba991e491e6380f1ef914e7ee2747c9c73907e393bcc83c7f05ec6e656d869980c2c03ba0a548ae120793030"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/nn-NO/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/nn-NO/thunderbird-68.1.0.tar.bz2"; locale = "nn-NO"; arch = "linux-x86_64"; - sha512 = "3ac255b5bb4b352833fd56d5aceaba6d0ada571630a993729970ae99d5067f05ba22e6ef50fa7dd099c0eb5874f11aeed32718c56a80538e28b401ee6b7900a2"; + sha512 = "33b67ce4100a61461a238189e06b623a067e5f1b550fe5f20b5686f597408f3d7eaf45c92bbf5ffe58ff96c99fac9b9e282b024e40829d4d9d4422e54cb7293b"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/pl/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/pl/thunderbird-68.1.0.tar.bz2"; locale = "pl"; arch = "linux-x86_64"; - sha512 = "19ab4bde9314dbed1bca7565698a7b1231767ef9cc792a49e7e9d679453ae8209e6f68c63ea0a24bd9e3a97328dceeedd109bfe28038108b52b9dad366f28787"; + sha512 = "860c606fffb3ae85193b4c919783c94ea1a84c2579316cef98adc247d7d595b01dc6c2e84662641c7285dfc65097f710d7d2605efd960847739ab4acfc296836"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/pt-BR/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/pt-BR/thunderbird-68.1.0.tar.bz2"; locale = "pt-BR"; arch = "linux-x86_64"; - sha512 = "68e28b657b885e7823dca0d091f2609556d560a50b5e6c285cdf467ae2b09743406baa2e544f17997519c219e0d4e8911115d30e7b0c35f09b956e28b311f8d8"; + sha512 = "3093207072a79d9556c4e1ca2fa75d990a3952d583f0a4fe8c850a4911b1af19e3ac08a357d239d66b22c397f6722b8625fee03ca1f2b6a8f21dc61fca348541"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/pt-PT/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/pt-PT/thunderbird-68.1.0.tar.bz2"; locale = "pt-PT"; arch = "linux-x86_64"; - sha512 = "41623568d2e78b821a89480836f8d8c739f6983b80ce26017d12fd9363016158fa6c629e030f63aba6e730e554b7717fd2ee58e0246aa82b46fe55d5d6be9933"; + sha512 = "5d29ed9a8e8c768a3749801dc191b27aecf7994a4afa02e70de823ed1eabe4e936bd7686830359aa48321681396aff29ead762ab28c7bda6f8aec36117e8cadc"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/rm/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/rm/thunderbird-68.1.0.tar.bz2"; locale = "rm"; arch = "linux-x86_64"; - sha512 = "a2cabac0ff5e3bb4a8dde4e884ba4647792e0935ef0a61b56470c67d3ba9c2310a07c2d2da51f7b4cb5fc3e841dd385a2c64ff29d263333a91e2044a4ad3190e"; + sha512 = "cf342acfbb9ab92b7bf483ad3227730dc3923ee107ae42a0fb05c6070256e43a4d3c1647c1fa2c4dec7adbc8c018a185bd3d91e598d09eac43ec679d3c25063b"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/ro/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/ro/thunderbird-68.1.0.tar.bz2"; locale = "ro"; arch = "linux-x86_64"; - sha512 = "2e9da10d1f88352687175fa48fb70f8a73cf3ab1d84958a79c4a46526b3640e264d98611806bb234f579d616fe7d1dbb2d4c6ba55a389363034f85a97283bb64"; + sha512 = "ae13fc229198a5c5327dd4d9d948f1a5eaf699877c48c1c961ca084e79075f479f4b270fed1c9ce22f420fecd4332a30594d4d2dc87bb114d1e3518e3a4a7071"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/ru/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/ru/thunderbird-68.1.0.tar.bz2"; locale = "ru"; arch = "linux-x86_64"; - sha512 = "5f4bd3d3657479446ff070cfdb33e16a527c6f1615f37fb4c4e32c12b89c62d5649fa5c3d826723be47fa9795575bd33ccf37c2aebb555c218aba8f9d68ec3a9"; + sha512 = "f51b1f99c16af5f24702f0bfd433c71c7ae899ded5f101aea2dcdc16f1cc9e1b7b18f26a4fd0ca9296c5e9007067e35bd9cc322bddfe07f58795147547fc0c56"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/si/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/si/thunderbird-68.1.0.tar.bz2"; locale = "si"; arch = "linux-x86_64"; - sha512 = "b47d2aea81327089445c9f57a1508406c534907c7b574006886828846e6deaab04e35de2781d55d882f05c0a89f65fa7c386547d6581064af4fc3bf4e879e379"; + sha512 = "26bc664b1623523d644ee231666a4489421ba31d1f0b52b5f4a4164343672333070c3781c577e370e7d97d42b61783077c74d1f38d37565776c752a2310c3a1c"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/sk/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/sk/thunderbird-68.1.0.tar.bz2"; locale = "sk"; arch = "linux-x86_64"; - sha512 = "4295204bb89789704da6830d33e92a77df165737c291c74a94fa532309c89505fb796151e0855b4e0bad8658fecaadc9978580ac72e2a2f24a4022909bb64aa2"; + sha512 = "46470afe078d1ef2e48b3732fdc02ff3c9104a727b4d94cae1b9c54f6d2b4771e5784cfb3e6350ab8a205f8ba010a82a2b2fe92313eb351496a19a99df75179a"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/sl/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/sl/thunderbird-68.1.0.tar.bz2"; locale = "sl"; arch = "linux-x86_64"; - sha512 = "598fe5bd04e04a73db04eb630e02dd7cc7af34d0381e6877626c8885bc4b879e1f35362afb8cfeb1bbafffc5b7ea14c8efe9b35b5e30056d04fa0126b8663679"; + sha512 = "9bb5b0c979fede4dfdaf8f4965bfed1ad78d14168efb797fc216ac2527434047c3e6b65eb9dd1e607f55b22f6f28e49b0ff58c272c0708cf5ae1f9ce96b2c796"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/sq/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/sq/thunderbird-68.1.0.tar.bz2"; locale = "sq"; arch = "linux-x86_64"; - sha512 = "0b657daedc98db51179cebf547d5f278d2d632bdb552878b4af29427ab8fad62f8d6c1ab2c3a38cbd8e67b670d6d613bdb1d4f535a0c69d0d1ca607d0b10bd43"; + sha512 = "440870b75e47aa277c5453bd997709d2f9e59e0aa86e2fa7f5aa95ad39b139d8e9b7b8a7dd44765d8f8d5ec18c5ce6a284ab40d4aca01b251bcd9e2183be4976"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/sr/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/sr/thunderbird-68.1.0.tar.bz2"; locale = "sr"; arch = "linux-x86_64"; - sha512 = "10efa11b9c9ba56142c8a321a25a7e875f3d02fd17f73bd3061ffc71823aeb1269f9a864aae88a4fc434d1c4a01d227c0be605ffa7f4ef6421db98c0141c839e"; + sha512 = "bced610dbc95e7cab982f40376fb7cce8e672f8533a66816f01667ba69d73dfcb00e95a80b42273c1ec7ada9cef8c14af1c426cda2f8425e3f77a3a0e393a611"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/sv-SE/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/sv-SE/thunderbird-68.1.0.tar.bz2"; locale = "sv-SE"; arch = "linux-x86_64"; - sha512 = "c77d10b35edef7e59f4e6c48cd4352c4fb7d05b0140aba12be42b3e3a3df609ebc86f2f5a3993fa172ec0ac118726314bc9042335101241637481a2e1a4d1c00"; + sha512 = "af139912f563710b05c274d1b89012e27a3997b582d379e3561011fed7c77994447c3054433e0fd4b5db8417d5b43b63e840d313cef1fc7a8aa7baf0655982e1"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/tr/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/tr/thunderbird-68.1.0.tar.bz2"; locale = "tr"; arch = "linux-x86_64"; - sha512 = "3d52693efb05379802d62fb9e40c4b1856b45ee948032634d4c4bde7bbae67327f963e0f1096fd5d7a15d4341af1ecf3d9ee96eed45146859d8e8e5d403d660a"; + sha512 = "50693e4638f8fea5a7f609924ef65c8d7ea4f4ffff79320651481e1a7f5cdf69edc2fd987137a0d655077959cbd8f32218d2f78fd55790084e2d46d3ecd70cf6"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/uk/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/uk/thunderbird-68.1.0.tar.bz2"; locale = "uk"; arch = "linux-x86_64"; - sha512 = "c09734ab8e6428c6ed270887a0add934a7058d5e9c895864b1128e0fd39d57e13789bab38cafaf7cdbac1a71c8884407698c4bdfcf48aeec6604a457ed57c48d"; + sha512 = "c24943567c110ce8cff6da066d0bd0081621d8c397e6569c57b63eef3098963a55215083aa655fa9c98adf9babfcedecfd72204c1a68604c851e1a5c1a1b0102"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/uz/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/uz/thunderbird-68.1.0.tar.bz2"; locale = "uz"; arch = "linux-x86_64"; - sha512 = "083a83ae3c6083934fbe49f1e65ceadc5b5459f0f29ae0df9901b6d9b29d0a105cbde94357c1ee0a9677ec923fd1d419c618db0e843cdf320c087108990b89ec"; + sha512 = "e02a86c848a013a84824246db3e29e889e1f5cc1b743a3a9b567b914a46100a808779fc13b897b04e8c698e14cf474fcea907e25e937e5c8b4ccb997f06d8e85"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/vi/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/vi/thunderbird-68.1.0.tar.bz2"; locale = "vi"; arch = "linux-x86_64"; - sha512 = "6ba1573c9a170d1d827b6d17941c25e3852f7b66be2eaf7a3e9ab02278f19a38b801d7b9b0c266dc4f38f1190f9c83990eaa51f4734ddb38f43ea3e1bd23b72b"; + sha512 = "de6d6794796f5b60cfffa9eee92906237fd692b21ffc3925c7866ea9660d26366f5fd3c847b2dfecc418b631c6241dad4e509e58e391c414a37587c6185c2655"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/zh-CN/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/zh-CN/thunderbird-68.1.0.tar.bz2"; locale = "zh-CN"; arch = "linux-x86_64"; - sha512 = "74ee429901cb520d07361a4b621c9be06253cf93300f0f91e3633d3b375e4e9a6a58823d4bbfed60519734ca5705f2cd0da4bdc7db0f578ec300f1d705e9b7b1"; + sha512 = "d5835538fe615544a07e93a2088b65eae6c3c36b75ca2b9f6605974d929a36dd226d848e2394611809538106f56c1703ebedb5c0776593e998935bd322a4e27d"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-x86_64/zh-TW/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-x86_64/zh-TW/thunderbird-68.1.0.tar.bz2"; locale = "zh-TW"; arch = "linux-x86_64"; - sha512 = "d720029e0720fa972d694712a85bdae94b1ff51213c4e56b84dff6d293a2a9831f5cd4efeb44070010eba1486b9358929f64546ce7ebb7cee29a7bcd4a1cd650"; + sha512 = "9dfaa7dc83725fa795cf1b2e45e7af760dc6c38999b05a0968e46d4b5676a4b9f705ebb63ff400ec6600d83a6be26eb4c2638671a539b59b6ea37002ea9b97ac"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/ar/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/ar/thunderbird-68.1.0.tar.bz2"; locale = "ar"; arch = "linux-i686"; - sha512 = "823b3cf50f8d23d1d0ba8583d2b10146e2eb0ff4a9401527557fae8e8db997ecc66d0bf5a091323bbd37dd6222bacb73fb9818de8740963b929a8893e4ec9391"; + sha512 = "17733249e5c2c33899fde89a5b2dea2592fe0414419c235f4d853917990a05664d52a05f1f1a290ece4bdb3646008b0aa0af1e495e5b8af0c08f5b9962bed5aa"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/ast/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/ast/thunderbird-68.1.0.tar.bz2"; locale = "ast"; arch = "linux-i686"; - sha512 = "f0087ab3189e8fd194d2ef6d5d2f9c3e14d592d5217a8fea19ba5189e806f9d484332f9d342a15549651a75bcfa673f21cd7666265fc185ec58c814814902ec4"; + sha512 = "95b40d08b988146db7175232c9d9be92175cc3fdd73ba5e205e6543dbdb9e6e33579edeec73b6961a7ace574d3466c162d0665ffbd3705de15b7ea4cf6d7b77d"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/be/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/be/thunderbird-68.1.0.tar.bz2"; locale = "be"; arch = "linux-i686"; - sha512 = "edb358214e93142d73c92ab3dcf6240cd08614c2d0e9ea506492023be46d7b7f6273dc767ae034762c052db3b0a093dd027187afb272b2a55fc3126b06ffb78a"; + sha512 = "d2f4ad38d81306c1637ae8612221bb462409373b3cfa70a08d0f2872aceccd8087835eccc014f4009680e9e36b6cfecc9bcb95328dcb8f6c9ef11c432e2d3c6f"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/bg/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/bg/thunderbird-68.1.0.tar.bz2"; locale = "bg"; arch = "linux-i686"; - sha512 = "f3268fced7a81b5046332f975906ac79b8ab5ac888dc1c81085dd7cd1b1a414988208d426bd305f67cbd913c58de857c844809ae6e6ab5a2a520d7d6b149b731"; + sha512 = "f2c74a0609eff929202d13719fce167577b2ae0e1a0c98b75b359bfcddcb531907a466e184ece24d904bd592ab41654f2dcc2500defece0aede3be3826dcc8eb"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/br/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/br/thunderbird-68.1.0.tar.bz2"; locale = "br"; arch = "linux-i686"; - sha512 = "c1be2ec4d4e64a2a9b32b974eecd182ad9d1fa23b775769e8535e742479ed6be2a222272d7c5b141393f0c752d4af704758912bbac1c17f445b3bf277c12eb9a"; + sha512 = "1f1ff89743c398443a18230ec0eadeb51a8d57633bb7c242f7003e472b0ea206dde50a9d20880ddfbc9ee36a3ca28135662ed21d6e8cb779627120c70f0aedea"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/ca/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/ca/thunderbird-68.1.0.tar.bz2"; locale = "ca"; arch = "linux-i686"; - sha512 = "ac0c2508b89812ba63d0bb770adc2292127243fe31bf140a4ab88c953750fc2f699c5ed2afb9a400cec48dc14d927b08dc96d5b110e2f2d90e81d1532ba9d916"; + sha512 = "608232b5bc7a93cd786d84662e59e3b186bb1de51cbe0f720cf4e80e65a93e09a24f06abfba63785c0cdba997a6fa871497998f1953f57a98ea6b9e224235ffe"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/cak/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/cak/thunderbird-68.1.0.tar.bz2"; locale = "cak"; arch = "linux-i686"; - sha512 = "4d73beb37469131b7e7747c85a73027e1eaf008100eee21e27d36b4736ffdb4cc3ca3606726e36033de64504f058ec9d4193797a09c2a591675636a5c00fc890"; + sha512 = "5e77fc07093e5b2cbb345f21b48415a5c7d987ab0a82540f398ef33c7051f1917fb448fe23401ec3683c87379aeecb287be5ffcf6a124df9a464401f242d1e3c"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/cs/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/cs/thunderbird-68.1.0.tar.bz2"; locale = "cs"; arch = "linux-i686"; - sha512 = "635ec13ec9fd688ccb9c690ccb4d64228f1f47755ce24c4806f5f47655af1279b9ee758fe15c0fcbd43c830edf66383bfa3d84d35137209a4af41aa59565f554"; + sha512 = "036304985db3ecccbe50a9b3d8c19dcc269f7c6987c1101c9443ea5fb2d14e71390ccdf6f0000c972af631863398a02cba1c05566c6be4ab3e79396c049e0e16"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/cy/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/cy/thunderbird-68.1.0.tar.bz2"; locale = "cy"; arch = "linux-i686"; - sha512 = "afb546562f92c93639a407598d9c6654b64776cb68db7ddb07c0d17f83d122d9e7bb974238ee5cdb90876bca3ea30356cc5eef28b11ccf082ef72c0343dc42d0"; + sha512 = "4de3a065234e921f9ae7250409ba24bc54230af61b4993c3686a77e1e165874995f7c60b45ab136c6b3f3047461e86c19207952b870019df06dd164054b65dc2"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/da/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/da/thunderbird-68.1.0.tar.bz2"; locale = "da"; arch = "linux-i686"; - sha512 = "f7b7d183312d11d02200890afe4e81c793b658729119d9f81ac2ca58714244ece9d64d1b9d9f34c79f1d00b574e24192ce066debf873c4b740c35208cfaec16e"; + sha512 = "69e190f9263438c88b445821b56b93c052613fd67a1f1918b135c719e4358bea46d3a79bc135d50b254fa686d8cba013daf89d40ccc5212062cb177bdab4d667"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/de/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/de/thunderbird-68.1.0.tar.bz2"; locale = "de"; arch = "linux-i686"; - sha512 = "e6b3ba227c8e84273e6dadcb59d6691187512666efcb63244740a56273c5b765c65d21607e4f07a508e5e63ed0812162ad767fcb1140b89b2c155da945586179"; + sha512 = "ce4cf8c1e11f4813ce173bd08ceed9ef26b2117771ca87ef16c001e1a49f5385a6a3ecf4bf7561d48aa6c7e63d307c2fbde77ef8a51fa0aa9b66f4f98386bff3"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/dsb/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/dsb/thunderbird-68.1.0.tar.bz2"; locale = "dsb"; arch = "linux-i686"; - sha512 = "84d39965568de9c87c280beb43330aec4ba6cdebf59a9c4f566b6bc01fbe15cc3987e87d9c24a9e746283cc54ec1ebaaff99952de7ff0aa9b6f05f36b1295d09"; + sha512 = "9007c92825220ff9685c599b1c6e39fe3e96888621ce5dd15f5ef9d812c09a29ef72a6eb2f68cd8eab78b5519b6c26cc957ed04f3c9798ea0305fa4f5c8bb962"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/el/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/el/thunderbird-68.1.0.tar.bz2"; locale = "el"; arch = "linux-i686"; - sha512 = "0942b5c8c7ee792d264824c6837d5857679feae9073fd2451b92dc0f31290360a24f7cd708e550955e798d2decb9f0c3a21dc8ba7bb5f226ba8ba9f502ef870f"; + sha512 = "e619576813260ec68a26226a83a540c58aea7e87d3b0ca35f6ae7bd9e0dcaaf54ab12f57cebf669060191e3affc42df1585a3ce4aa18f82f6afe469b85de495c"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/en-GB/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/en-GB/thunderbird-68.1.0.tar.bz2"; locale = "en-GB"; arch = "linux-i686"; - sha512 = "12fb5086fd012d85f35a41125b7e5ebf37ec34e9215db9b2a4c67f924d3bfa738698ba15bfa2e51f8cbe0d81cdfe5de4bfecd54b0fe6cc7163c753444e56bb9e"; + sha512 = "0810f25326d8a08628aa55d5c15e6144f833454019087fa20f2c128bbaa4380f9f2a07714b0d8ac0f3fabb5b6065e7b2efe6e80975e5e47e81749da9f4e6be94"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/en-US/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/en-US/thunderbird-68.1.0.tar.bz2"; locale = "en-US"; arch = "linux-i686"; - sha512 = "6004186b0b27165a4d54191a9c2daef34b580c2d97b1e0472e8d8d863e3df51ed56ef17abb7c6944f4da214772780b5c69785b9ad22ca26ba1a8f0390beedc19"; + sha512 = "adc1dddf36116435b3948810cd9d647febfc97d62443032100b0f2d722913aa051d44244f057c29cb8c6cf494fc67b3044b83ebfd5eacbc36b6cd9c88361078e"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/es-AR/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/es-AR/thunderbird-68.1.0.tar.bz2"; locale = "es-AR"; arch = "linux-i686"; - sha512 = "6a547a1d0450de1089df18baae81100d3fb9934c963459ec83ae81504e7a1ec7abf595766c84fe8d321f901150a68b7e172888028f3b992b4b6b74ba98ca4efe"; + sha512 = "a9433a5de45477f432c6906b640909880650443e5e3a65a839e9c055d887befedc8c22c76675700886dc128ad190fa0ecdbbf2c5f18e650219b33a78105eac63"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/es-ES/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/es-ES/thunderbird-68.1.0.tar.bz2"; locale = "es-ES"; arch = "linux-i686"; - sha512 = "e1256da3c8938776b11444790f20a68f056f7407f444f0884dfa1c52260309d4adfc64fe95168dd8263e4aea650362ab9fa08930559c7f0e97b3489c172c81fd"; + sha512 = "a128e46d7d2cce449a261f857a221232d2d89a7d999bc074ad5d1aec741f766516f3882cc2603d6284458208c2ed36dcb81e214039222c9c15450e96e73d0283"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/et/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/et/thunderbird-68.1.0.tar.bz2"; locale = "et"; arch = "linux-i686"; - sha512 = "a5d7cd5e3171d44dbf91f067231301940e8a622a6729333512b49bc037022bc2058fa548c044a40b7ebea5d3199402276a34eeec5cb21b2070d7cfd96737def1"; + sha512 = "521d004b432fd27ed6b167263253b3a3c89aa22ee5e06a4a434da6948a8c2af4fe27e17a1ef962e7caedf7d15ab27b98384545069abfaaf41871cd5878fdbf72"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/eu/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/eu/thunderbird-68.1.0.tar.bz2"; locale = "eu"; arch = "linux-i686"; - sha512 = "08047c83e28397d265712dbd5a533799b2bba97d90f83b93be8377a544226ea0dff22f5b5e2cd5314c24608825048f3e59c6fc348959d63e1acb81d10d687f46"; + sha512 = "df8afc11cddf0c06d05bee455833bc5d786789a709baeade7b64e8f815c42f399fca1442a8b64271fea7e45fed4408ee923293cec953e0406b093f0b94120861"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/fi/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/fi/thunderbird-68.1.0.tar.bz2"; locale = "fi"; arch = "linux-i686"; - sha512 = "ae407ee0dde2be8a8f89979b5dcacebd13fcfa42fddce48773e8f26ffbb503acc6b17a90170a0d72d550400397c17a725f9bf6f65d842f0f281fc58eaf9dbc53"; + sha512 = "51e05f21e01dfa0fc3c5d0463d80e87a38e50dff612a7632f9a5cd440f037a438a555e3640cdddd794ebe04eb2cc15c549db7ac829c91ac488b73b66808496a9"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/fr/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/fr/thunderbird-68.1.0.tar.bz2"; locale = "fr"; arch = "linux-i686"; - sha512 = "a776215a9ba91de0500cc7fda245afa19a49b51b60089c55444aa452c5aca06cf3b95e66448147cdbc3df063348c28bbde3f3c2a6e19deed26e1b33dec565b25"; + sha512 = "9448860f48fd93383a24fead6af1102af855270749e817f720e2afac152949e47fcc9ce6fd0d2c60d3dd958c855af47a54a38e85975acf05496a7f67d2af72fa"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/fy-NL/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/fy-NL/thunderbird-68.1.0.tar.bz2"; locale = "fy-NL"; arch = "linux-i686"; - sha512 = "5302a5709fc4485eff607fd0b5e75f15bb600a14d20661cc4f7280b0bf5c156a40a51045182ff0d31c89d4009c5a516015843ec9fef1fb1134cfa80c511c05ad"; + sha512 = "e9a27da8b86e2ec3593056a19001dd656b8bde07edc918ec18f266de377c697eb0ea3a10fedb223e58db53ae5970d2b9753b46fa87db938e5568283ba136bd2b"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/ga-IE/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/ga-IE/thunderbird-68.1.0.tar.bz2"; locale = "ga-IE"; arch = "linux-i686"; - sha512 = "4b9cfa317f8ae5accb2c96731bd7fcbaf2eebaaee76bc7383d247cac9db6708b7c4c03d2faf3a6e7e6620b3eb696e9bb3fd18c3dfd1f3ce12e4bc65bb86955ed"; + sha512 = "b346fe3863ab7944ac33a8204eea7a458a0131c879eae26be66928bed930aa29ba74a5b0e39aa939f0320fb8e5fb0a5e31599235daed526f920b92240763633f"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/gd/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/gd/thunderbird-68.1.0.tar.bz2"; locale = "gd"; arch = "linux-i686"; - sha512 = "8738b93fd18972456158c28d4146ec8548e97339d7b4ff044ace814213d27940b02f9b889b5809525d5bba46a5b3ff4a570c14b3b9a5fe276b4aec515b62055b"; + sha512 = "e921a3c2720aad333febe7e1d69579eeda4f641fe32c1b6235fb6c01480ab7c87bcb47020b0dc2e4225746b277d8c6b288aaec86125ad48da9fbe3452f30e01a"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/gl/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/gl/thunderbird-68.1.0.tar.bz2"; locale = "gl"; arch = "linux-i686"; - sha512 = "c556343f99d39f6ff41f0b05af606ada89e6b95938886f8d0b1ccd7b77f336ae40a8debb003d2bfc865548c5e9e055859d6d353e169a4f2ee7ada7cb8687cc47"; + sha512 = "dd581aab660e96d7b0283bacab74d5635610301fbf40e95bc85edb5e177492f2a9c786a4fa722024fd57e2f2158fa339c161fba605ae428b5c03fa983b70d176"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/he/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/he/thunderbird-68.1.0.tar.bz2"; locale = "he"; arch = "linux-i686"; - sha512 = "b6eed03bdebfc334c8852a15989c024883b99f600b9aa58f8344976b63f1f9590aa9b78a2a27b081a1e5256443801f01c1f638f1e4f8c0c2a78e695a5e2f590a"; + sha512 = "2ab68acb57eadab585bedaef3f79369cd7a0c08030d24bc3361a0e08ff796f28f345cae15fbd78bd1fe2c275f8d4fb7058194ef44dcddd3e8f92b69f92482321"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/hr/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/hr/thunderbird-68.1.0.tar.bz2"; locale = "hr"; arch = "linux-i686"; - sha512 = "aa4527614db13978d03cf07444109dbc63b7788a2cff924b5566c98d9316031f1c0fb74839b5be78030959f85147c1c1e50edca5605b5cbe2ad3bbbb257c24ad"; + sha512 = "975be725774e200f39b77cbb16ad364fb5d901ef46a85da9f297b61140e5be61cbf48de9f2ea0236d4580a27be97e87c195b92d9286133ac5aac2a35b1b7e5f7"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/hsb/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/hsb/thunderbird-68.1.0.tar.bz2"; locale = "hsb"; arch = "linux-i686"; - sha512 = "92b1e17c825a60da17bc9942b689337246f301843637fe420284fe89aad4ab2f30101201330d5319a7e6a2bd87567bf7aa7b35bfbc13b1399ed54973afacf4ec"; + sha512 = "5d501e9b7a39a518da0a82c1a89f398adaa449753b4dadc6ff8fa610bfc152016e6f70c1a944cc85e72fcaea5aba21a04d5abea2f2e045ca1c9212a37d31c461"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/hu/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/hu/thunderbird-68.1.0.tar.bz2"; locale = "hu"; arch = "linux-i686"; - sha512 = "5e0c03de66a9098e290fb93545cb46be41d7e91c865cb3fcff9dee7d141fa113cf7bfc14cbbf1e8f9e3979e6602116081958c22a83ea043015cc5adfb738e5ea"; + sha512 = "4cf2c82e4d965c3ff51e40823f876811834cf7602d9cca30011346c2bdb6e222b7d37f28db79b6507350cd833db312aaf30c13ae245c93a6b1118d9abb132571"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/hy-AM/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/hy-AM/thunderbird-68.1.0.tar.bz2"; locale = "hy-AM"; arch = "linux-i686"; - sha512 = "3df1da5c3d18ee3705e5d5013a752920863fdcee8a1c021bfde28603862a7c56e60a65b46b98af5d66fc5066c1580ab5484d86dd278d64d5d800b3840361b812"; + sha512 = "d13d91b889903bdbbae1e12b96f07bfc6f5a6cb734a45fb87402ac44df9fcca703e067b1d1554a41c9b7e2e31703021eeeedd3ecd8b27536b548a3b2d89a1f27"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/id/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/id/thunderbird-68.1.0.tar.bz2"; locale = "id"; arch = "linux-i686"; - sha512 = "786a5839f311df656fd4a0687819a47589f5a6ebac6f76e1f643136286d43b2f27744dfcc116341a8905b5e1da4ec0ad1f1eb4998e188d2e87ea487c6826fb32"; + sha512 = "7c199788cead727742dfebbcdf6ddfe4491be31a3f4dcc7ae05d25413101036cad7fae399f6b390002f55f60214ea66399d5bfdc515557351b309d174b83fa55"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/is/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/is/thunderbird-68.1.0.tar.bz2"; locale = "is"; arch = "linux-i686"; - sha512 = "53e4f76d41e1f8af240ecec249bd3ef3c787c6ff69320694bc682a876a76be22ed59abf0bc83691c7ea96d1e16f5a4c859e2b62528c99261f562012dbd035a9f"; + sha512 = "33ac7dae65efc4792f92fed4eb0062302ef601f6bceef4d1eaa6b4a7fd75427607e8ebd7f6df70073bcbcc89f057b0689e365cea960428b5e57f9f1e810d6e48"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/it/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/it/thunderbird-68.1.0.tar.bz2"; locale = "it"; arch = "linux-i686"; - sha512 = "8ecb5594e5252be84f97a55b37f5089220a3e5c1565686fe02f00d94a1418a9460e4c1f25724243c82b3c9442eb8cfbff3c3c9470971921469f2fd71aec66860"; + sha512 = "231acc8648e2e377a8ca6d22c273957506fd1c21f226ddd681fd3a91940cb151df4f0eb05885ec0325629bb0cfdd3ed500af6047970b43b898a37586e4612502"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/ja/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/ja/thunderbird-68.1.0.tar.bz2"; locale = "ja"; arch = "linux-i686"; - sha512 = "7f9ed4fbdc0549c6ab704f80676218980a4b2609086437f57e22e9750e5a34d7506c1ee43ec48031a28322cdf4dcde6bd14c05fd032244acf33310fb6aa8e9a2"; + sha512 = "90b8ca0d72fef8fbeae34027c95e3391452d72b53b40ecd59b1d2d2b07c6ef2e4d787bb2e927bf3d4b7837ea4cf2f10a0d3ccb0a6c98992e6fd857717c8ab04a"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/ka/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/ka/thunderbird-68.1.0.tar.bz2"; locale = "ka"; arch = "linux-i686"; - sha512 = "bab15aa28fc92850d374f76ae9898c9408176db9b9e19cbdb49f7b586172c20eed0cb358f3cd4b5fcc2a4740188c0f041cf617a63743a42648c7e33dd0fb79e8"; + sha512 = "271415dafa136d326b89ea3a58b852e2526c86f45d63f383fa250ace14f71b1b915dac3810a04507d9ca4437c640065520f9f3d9d032cb7eb84aad1f7b3517ba"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/kab/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/kab/thunderbird-68.1.0.tar.bz2"; locale = "kab"; arch = "linux-i686"; - sha512 = "26b1055333e508666dd24706da824c5cf9d5f87d1d1cb1c4d42894b836412205a7cc7ff73f764d8f2a1852138923bb02a6b2a2c3c92d1fe9307529533b6360e9"; + sha512 = "c0b4fe65e9937bf897e7512ff6f267993c324c772232317e1314ce035a282f313b8385eee8c13e7b131eb0fabaa1b62345fbcd6289a5172d78aa3abf7f716bb2"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/kk/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/kk/thunderbird-68.1.0.tar.bz2"; locale = "kk"; arch = "linux-i686"; - sha512 = "d946c82a8c35d82147812ef16e4573ae559dbfe65f4a6e5fc7dd107fb57fc6ba2a47f8a3655344e9e6172628692ad7815045830ee27bb10aab0d71483936d6ac"; + sha512 = "b8c7ddd098540ef8354eda1f2a3a06987d11cb7e0c4af4e170d507ec540e743a7d2527188c18e045df99576ed44990a800e7f7ce212042eb03b02339be9f86af"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/ko/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/ko/thunderbird-68.1.0.tar.bz2"; locale = "ko"; arch = "linux-i686"; - sha512 = "3b9d9e70c097a1b7958c6854bc2da121f44921962d873e7f90fee85ce2214725223482aebcd503205e32501648c774199eced7ff34effb428dbc738f1ba4b963"; + sha512 = "a33dbf6ef3aef69644261ea1c1cf3986fcda5c9d0b28996c46e3d8e53d3d7f8e9e6b62f1b03f2816267b483a84295ad99e888cf76c5c192e9a9dbadd78ce7d8b"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/lt/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/lt/thunderbird-68.1.0.tar.bz2"; locale = "lt"; arch = "linux-i686"; - sha512 = "0cf99a6aec58d2f56f6a52fc5fee17b9e1d5abd0ece53073cc392c71452e1415c94ad0af003dd0a97fc5c6744a1a2243aef69dc44b831be51108b769e5bff87d"; + sha512 = "3bf1cd599707a2728fbf46beadb7d8d1832c0c271e98647ac7d2de1be78b8c1b5d0af4ac246af01eaf4b2a57154f6068065fbbb2019346b663cafeb40edd5b71"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/ms/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/ms/thunderbird-68.1.0.tar.bz2"; locale = "ms"; arch = "linux-i686"; - sha512 = "8b4697a312aafdd88a5ecdf898a796bddb91e80b4c8c9c342fce765ee0f4dd494114324a51d6379468756a44bc71cb6f46b8fabc7ca733d9d85d08069f18526d"; + sha512 = "563c413b21e2fda6f412a1826b1191097d4df1ade8d12e031522e122bedea6ae23a2d3b047e870030c9b4901a5869c9439107d8a7ebc6380c758bd741e0b4128"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/nb-NO/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/nb-NO/thunderbird-68.1.0.tar.bz2"; locale = "nb-NO"; arch = "linux-i686"; - sha512 = "ad6275f8343dd36ed039524875b41ab9c8bafd2a1e54291b98c16b0ab35f9bea1bfee3fce86070317fad2f25d46d0aa9ef0824e4ad88e0879a33ae753c61ab2d"; + sha512 = "c9062949faf5cbfe8bde2b0f330f76b438e1606360364a90f0e35026fd52952d6aff7c6925fd1ce569b24f41409d0b63540dbeb0ae82260604d5faaee723bc2e"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/nl/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/nl/thunderbird-68.1.0.tar.bz2"; locale = "nl"; arch = "linux-i686"; - sha512 = "49f586a62969e6ea5638eb95f812e7d4a891ef55f381633792ed0820ad098cc527dc9490c3a1ce52246526f0a8cf00eb16666c6a7f932a68c6d440e151b452cd"; + sha512 = "b8b385db8fd2385a88d12c1ba23bf812592beca14e44d9c33456ebad16a40db8e7d886779565a4d617fc56f7a6d651dc8da171b1c727481895d05777bc0eb3c1"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/nn-NO/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/nn-NO/thunderbird-68.1.0.tar.bz2"; locale = "nn-NO"; arch = "linux-i686"; - sha512 = "1f04f2bf7a60472eff1b546608cfb26e41f31a273d1037e0d73530029a757dfcd95e2c1b85a6990b6f7eec28138835fe096266a00dd094b4db74007cd59ef00d"; + sha512 = "3c88ea8dffc71524402416d9222c859dafc5bd5799651a948bb318a7d2f91ca2c00fa4158e6019949f9a1d72a2d85a0c9d2a3c9a8caf052e8743fcb5dd0dccb6"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/pl/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/pl/thunderbird-68.1.0.tar.bz2"; locale = "pl"; arch = "linux-i686"; - sha512 = "f232e4b6cfcea81ed70e56e9812b8e0783205f49b846d29338ad09457db9a18e4fbb35738bf5e9abce42855c13c1839605aa343cb7d33d0110b68d634183e697"; + sha512 = "c6ba1f98ebc44af63d8cd8052fd306d3a8920c33eb5b3be563c0fe203d5d07806bc5db7ff88847c3ee2d82c62d0811a086fa91e8253eec3a3977091569f40a20"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/pt-BR/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/pt-BR/thunderbird-68.1.0.tar.bz2"; locale = "pt-BR"; arch = "linux-i686"; - sha512 = "2527ec08fc23d01712574e3c8419273ac82111c5f2b4b6040cd8f3292aeadb36021029b01bc319d8ca52177db39f1a446acd5537a6e8f42800eb22c3e2d7cb30"; + sha512 = "cbd4c0f1b14cb04b98ef6f2e4ce53d655b58ae9a11047eeb1959ac1c4ef4370507194dd1149372fd1dad4ceedf91c39f3bde4fdf07b5d925f27dc8eb5041be67"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/pt-PT/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/pt-PT/thunderbird-68.1.0.tar.bz2"; locale = "pt-PT"; arch = "linux-i686"; - sha512 = "c91d9d0becade1508a3212693f5fcdeb917fe5df5d63b54de125b76786dc3787a7f5f220eb48add1dd1eee95f7eb120b1c1dc85dc0bd91688c883be9219f3d7d"; + sha512 = "ec08c628708a7bbcb00df2122e5fc463e1b0e1c031e9130369ddfee12db3cfe9219f7939756fc47abab8514c6cea642bb653ee420818ad625a33caada7005993"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/rm/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/rm/thunderbird-68.1.0.tar.bz2"; locale = "rm"; arch = "linux-i686"; - sha512 = "45a4f608eb5e64f24ee385328a3a568aa2ad3284169019423c8b414790779cd079c2d73b290716f18227210ab5eff50625bd6688498bc027228b8fff51fda5b6"; + sha512 = "4520dfb1529220e40cf2e1aca44cbc2af750fcceee3639d7ef334e9488034b18bc6e73b5b7a37204346da53a44da099f4f7f65d5b3dbdeac6d6934918c02cca3"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/ro/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/ro/thunderbird-68.1.0.tar.bz2"; locale = "ro"; arch = "linux-i686"; - sha512 = "e344d838e2f79dd8ff79cf2e7ff2a1d8f6c7e64f29cf870d8a6fad9b3dee31de6c0a80d3007dd498dffb816c00dc8429150bc6b49a5b6eb10b633a4e942ca725"; + sha512 = "49e54dd1cca8038ab6c34e9980b6b36117aa157b6555ba440f0d7c8c4d909253989b9a50d25c7c18529136fa26d0ff94474d17e43156afba171948c9c05e16a6"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/ru/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/ru/thunderbird-68.1.0.tar.bz2"; locale = "ru"; arch = "linux-i686"; - sha512 = "8dbfd4f8969703623388a55e790b722933f2c1faf702ff5c7fdfe3cdab8f62fc4ea69f9303edf94a41a71be1b8c5a2ddfa5509d4c8abe260c91b7075349afe64"; + sha512 = "6d297592bcf0c9b97c40f1053a95385e6c2510aa0ddfafd25085bc6a954fb5460f59f18f65477d8c93af829cd2a053b389b5dcec35a7ac7766d72c29064e5687"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/si/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/si/thunderbird-68.1.0.tar.bz2"; locale = "si"; arch = "linux-i686"; - sha512 = "f1808e9648caa00afab0609dac1cb564dbf6e5bef75446071997cc9913da8470e54cb254282fc6e8b839e88b003ef18426609a97cd1affb93659fcb519913a5c"; + sha512 = "f602557748517324943b5ff276f4efdeca1c5083662bc9f0b0bdba8c10510cee834b3883870a98d51d406f58e338a09d0589b3bc0891bfbd88b895cca02fd360"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/sk/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/sk/thunderbird-68.1.0.tar.bz2"; locale = "sk"; arch = "linux-i686"; - sha512 = "7d5b480a44dae0d2f5348261ecad04348ebb7943a757fe83c0fb154da251b423ba21840c5d1fbf8d7979dd30c2d5e7b18e90d0ad033a1e96d6f6587407a24cc9"; + sha512 = "7b6980d2b5131bd9a43a29efa2f1e97c60e15410a63224d839548d777fd8b4c4d65ccfc7756227cf900f7420b12231c3d48f062133cb6f21bbdcdcdb179f2e47"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/sl/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/sl/thunderbird-68.1.0.tar.bz2"; locale = "sl"; arch = "linux-i686"; - sha512 = "f76e1f01b8da8a2ba344dd3bedfa4301df03fabf9848fa189d522995cd48d81f8d00f11e01722868acb1993d4e79977122e04e3d208629b2e398c715777194e1"; + sha512 = "ecc38fb4fde66b7b213b1cfeb8ab170b3e685d0a28c7e071e19a85509ec74e79fb6eb61104c47f0eef1a77e1e1a52b292469a364747eeccc701c522452c58351"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/sq/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/sq/thunderbird-68.1.0.tar.bz2"; locale = "sq"; arch = "linux-i686"; - sha512 = "cff32ee84324724dea5612e5b48b22adc63d8b9428c5937f84c94da83bcf5f2aadda6ab81c5f9bced6d693689bc38bf15c764d4ab4809cacec3bb54cd82745f7"; + sha512 = "3ff668c6ed28bdb2f3d388ab8ecb1bf3b2b38bb29046b8559f7b9f9c6fa32db226c4620f472ba5a982b473e3e3f4aee04aa3746e57738b512dcb37fdfd5ecfc5"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/sr/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/sr/thunderbird-68.1.0.tar.bz2"; locale = "sr"; arch = "linux-i686"; - sha512 = "96d25f7d952e204751cd601932713418cd495d11364430a37ecfa36333113a6132209b8e8f0ec337799ed02b71b388f43e22a53fa168f17e4d15e7594170299a"; + sha512 = "4c71511375333802f903cb632963933054a969c02a3fb23f4416e0cb3c21e18147bbffb28572f8ac90aa5bc3c4138b25590c42610c20a14b5e8eddb1edf28c28"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/sv-SE/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/sv-SE/thunderbird-68.1.0.tar.bz2"; locale = "sv-SE"; arch = "linux-i686"; - sha512 = "8bc790d7951469e2dfa2499622464cf55427a6bc93dec50b18f014ac079ec0579b91a11680e4104f7d6a38f60d467e9fb3c9ee7ab83b64f8dae2c1e979150bd3"; + sha512 = "5d7d569f4eb9ed738f54139a90e9a01e9e771a553af193357d45765bd54815a096ddc31ac69620d6f14516e8f41f1c0fb8f16a848e13273d0c18b9c047d85fb4"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/tr/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/tr/thunderbird-68.1.0.tar.bz2"; locale = "tr"; arch = "linux-i686"; - sha512 = "2c40fa3e6ecfb68507897e669bed229ed98e1b4a3998b55b59523d3cec1fc5553cfacbd9be3d55f7a32b612ee662dfda7c8a21a4c26c750d48b87d31368a9942"; + sha512 = "fc8892f85032d9fcce76c3fa971531f4039b8bb9e1812776bb3e7c5b68474543b5db4007f79e81abc1685c74f0574201236aab8a2df05ac10fcaade7c57ca3c2"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/uk/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/uk/thunderbird-68.1.0.tar.bz2"; locale = "uk"; arch = "linux-i686"; - sha512 = "5eee26a500c1d4bf71222987523cc3e5f144aca02c17c88a01d4b68f9ac5e1298407460c69504d0a7b1e5727755cb32e2ae523cd97766419848c1b6dc0a30bf0"; + sha512 = "80335f326bde31f4b1e269cd756b4b41ff3a632023f09447abf6d1964381f8f9657a4f47ed6af63a3eb0cd4e84e5bced595eec07cc0a9e30ad8d3cf3d08026df"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/uz/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/uz/thunderbird-68.1.0.tar.bz2"; locale = "uz"; arch = "linux-i686"; - sha512 = "51a0fc8dc30cc82f7d3b222167aaa8ea0225b4136ebacee38687cdc1235c0720da14cd2a3e1875a4c4bfa3bb8fd9045541ca6df736115312ac49a2db2ef83639"; + sha512 = "2434a8a063b0d1019220579bc83160217d5c269b24ad83a9ed0969425a1fc9d9ed8b190c291d87c34379928aa6c2329d3b5ad287b44177dd61f680081cd7caf9"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/vi/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/vi/thunderbird-68.1.0.tar.bz2"; locale = "vi"; arch = "linux-i686"; - sha512 = "bb02dd69a8c8d514666fedb9d7de520f6ea89740956ddcd9d7f90175bca6f7bcf79b573c6e5ecd6fdfcdd15aa2a35881e8877074fbb795019eccff52cb943a91"; + sha512 = "0e33f1a2f8cd67bdb523180af0b8afa5fbbb3628b0b9407f2a4ae609c7155b33fd85a1f23d9b74097fefb045fd0b437f58971cc4c4d5f391398d6ea7429b921e"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/zh-CN/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/zh-CN/thunderbird-68.1.0.tar.bz2"; locale = "zh-CN"; arch = "linux-i686"; - sha512 = "408599229da40b2ce1a23ec1e5b12c7f4a24fb63524d792d50764cdfbcc6774dd7f651ba2dce46bccd94937e24b4b08d8bf37b6fb839c61540dfbf36f6d3e6b2"; + sha512 = "27d1d9b3c30ab1dd863362139f91b79ffb7e36e87ff1f7f07162ea3e86a58962136e43cca3212e4263908f63dfe3a3c53bb3db3085e5b4bf07e0ff88408822d8"; } - { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.0/linux-i686/zh-TW/thunderbird-68.0.tar.bz2"; + { url = "http://archive.mozilla.org/pub/thunderbird/releases/68.1.0/linux-i686/zh-TW/thunderbird-68.1.0.tar.bz2"; locale = "zh-TW"; arch = "linux-i686"; - sha512 = "d75c9bfc6234fa0ddc56b7c1dace76b789e29c0cb03ff17395eeba020a82431e457271e95117731963f2666295b94746d0370bf0e85f9c3646836830684bca45"; + sha512 = "2141f0ad5d11daf3a94f3a737801ec0234a7f2d869320d4859d771ab92a6e59bf13139b4048a7239640635051a9228e6cbf55746402ed35cb398d93a3d129439"; } ]; } diff --git a/pkgs/applications/networking/mailreaders/thunderbird/default.nix b/pkgs/applications/networking/mailreaders/thunderbird/default.nix index f2b4cfb4bef..1617ccd7dd1 100644 --- a/pkgs/applications/networking/mailreaders/thunderbird/default.nix +++ b/pkgs/applications/networking/mailreaders/thunderbird/default.nix @@ -25,11 +25,11 @@ let gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc; in stdenv.mkDerivation rec { pname = "thunderbird"; - version = "68.0"; + version = "68.1.0"; src = fetchurl { url = "mirror://mozilla/thunderbird/releases/${version}/source/thunderbird-${version}.source.tar.xz"; - sha512 = "2cz583rwfpj4z5cwg2vfy4ha0pz4xs9g7li078rmk6x19haiv8s9fwijd82xgxax0afn8wk80bq5kd8yz38l9432f6bar8xnwb21y4i"; + sha512 = "06036nawpm987q33567nhz55qybbcl55h5rdhjbhck5qmyj1qi383xqac5niwyk7c0gaq4ygwc5a24pysf85crjdway2zmqyjxp2apb"; }; # from firefox, but without sound libraries diff --git a/pkgs/applications/networking/p2p/twister/default.nix b/pkgs/applications/networking/p2p/twister/default.nix index 647b708e102..30491470392 100644 --- a/pkgs/applications/networking/p2p/twister/default.nix +++ b/pkgs/applications/networking/p2p/twister/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, fetchpatch, autoconf, automake, libtool, pkgconfig, python2 +{ stdenv, fetchFromGitHub, fetchpatch, autoconf, automake, libtool, pkgconfig, python2 , boost, db, openssl, geoip, libiconv, miniupnpc , srcOnly, fetchgit }: @@ -17,12 +17,13 @@ let in stdenv.mkDerivation rec { pname = "twister"; - version = "0.9.34"; + version = "2019-08-19"; - src = fetchurl { - url = "https://github.com/miguelfreitas/twister-core/" - + "archive/v${version}.tar.gz"; - sha256 = "1bi8libivd9y2bn9fc7vbc5q0jnal0pykpzgri6anqaww22y58jq"; + src = fetchFromGitHub { + owner = "miguelfreitas"; + repo = "twister-core"; + rev = "31faf3f63e461ea0a9b23081567a4a552cf06873"; + sha256 = "0xh1lgnl9nd86jr0mp7m8bkd7r5j4d6chd0y73h2xv4aq5sld0sp"; }; configureFlags = [ @@ -40,12 +41,6 @@ in stdenv.mkDerivation rec { boostPython db openssl geoip miniupnpc libiconv ]; - patches = stdenv.lib.singleton (fetchpatch { - url = "https://github.com/miguelfreitas/twister-core/commit/" - + "dd4f5a176958ea6ed855dc3fcef79680c1c0c92c.patch"; - sha256 = "06fgmqnjyl83civ3ixiq673k8zjgm8n2w4w46nsh810nprqim8s6"; - }); - postPatch = '' sed -i -e '/-htmldir/s|(default: [^)]*)|(default: ${twisterHTML})|' \ src/init.cpp diff --git a/pkgs/applications/networking/remote/citrix-receiver/default.nix b/pkgs/applications/networking/remote/citrix-receiver/default.nix deleted file mode 100644 index 8d21f64765d..00000000000 --- a/pkgs/applications/networking/remote/citrix-receiver/default.nix +++ /dev/null @@ -1,215 +0,0 @@ -{ stdenv -, lib -, fetchurl -, requireFile -, makeWrapper -, libredirect -, busybox -, file -, makeDesktopItem -, tzdata -, cacert -, glib -, gtk2 -, atk -, gdk-pixbuf -, cairo -, pango -, gnome3 -, xorg -, libpng12 -, freetype -, fontconfig -, gtk_engines -, alsaLib -, libidn -, zlib -, version ? "13.10.0" -}: - -let - # In 56e1bdc7f9c (libidn: 1.34 -> 1.35), libidn.so.11 became libidn.so.12. - # Citrix looks for the former so we build version 1.34 to please the binary - libidn_134 = libidn.overrideDerivation (_: rec { - name = "libidn-1.34"; - src = fetchurl { - url = "mirror://gnu/libidn/${name}.tar.gz"; - sha256 = "0g3fzypp0xjcgr90c5cyj57apx1cmy0c6y9lvw2qdcigbyby469p"; - }; - }); - - versionInfo = let - supportedVersions = { - "13.10.0" = { - major = "13"; - minor = "10"; - patch = "0"; - x64hash = "7025688C7891374CDA11C92FC0BA2FA8151AEB4C4D31589AD18747FAE943F6EA"; - x86hash = "2DCA3C8EDED11C5D824D579BC3A6B7D531EAEDDCBFB16E91B5702C72CAE9DEE4"; - x64suffix = "20"; - x86suffix = "20"; - homepage = https://www.citrix.com/downloads/citrix-receiver/linux/receiver-for-linux-latest.html; - }; - }; - - # break an evaluation for old Citrix versions rather than exiting with - # an "attribute name not found" error to avoid confusion. - deprecatedVersions = let - versions = [ "13.8.0" "13.9.0" "13.9.1" ]; - in - lib.listToAttrs - (lib.forEach versions - (v: lib.nameValuePair v (throw "Unsupported citrix_receiver version: ${v}"))); - in - deprecatedVersions // supportedVersions; - - citrixReceiverForVersion = { major, minor, patch, x86hash, x64hash, x86suffix, x64suffix, homepage }: - stdenv.mkDerivation rec { - pname = "citrix-receiver"; - version = "${major}.${minor}.${patch}"; - inherit homepage; - - prefixWithBitness = if stdenv.is64bit then "linuxx64" else "linuxx86"; - - src = requireFile rec { - name = if stdenv.is64bit then "${prefixWithBitness}-${version}.${x64suffix}.tar.gz" else "${prefixWithBitness}-${version}.${x86suffix}.tar.gz"; - sha256 = if stdenv.is64bit then x64hash else x86hash; - message = '' - In order to use Citrix Receiver, you need to comply with the Citrix EULA and download - the ${if stdenv.is64bit then "64-bit" else "32-bit"} binaries, .tar.gz from: - - ${homepage} - - (if you do not find version ${version} there, try at - https://www.citrix.com/downloads/citrix-receiver/legacy-receiver-for-linux/ - or at https://www.citrix.com/downloads/citrix-receiver/ under "Earlier Versions of Receiver for Linux") - - Once you have downloaded the file, please use the following command and re-run the - installation: - - nix-prefetch-url file://\$PWD/${name} - ''; - }; - - dontBuild = true; - - sourceRoot = "."; - - buildInputs = [ - makeWrapper - busybox - file - gtk2 - gdk-pixbuf - ]; - - libPath = stdenv.lib.makeLibraryPath [ - glib - gtk2 - atk - gdk-pixbuf - cairo - pango - gnome3.dconf - xorg.libX11 - xorg.libXext - xorg.libXrender - xorg.libXinerama - xorg.libXfixes - libpng12 - libidn_134 - zlib - gtk_engines - freetype - fontconfig - alsaLib - stdenv.cc.cc # Fixes: Can not load [..]/opt/citrix-icaclient/lib/ctxh264_fb.so:(null) - ]; - - desktopItem = makeDesktopItem { - name = "wfica"; - desktopName = "Citrix Receiver"; - genericName = "Citrix Receiver"; - exec = "wfica"; - icon = "wfica"; - comment = "Connect to remote Citrix server"; - categories = "GTK;GNOME;X-GNOME-NetworkSettings;Network;"; - mimeType = "application/x-ica"; - }; - - installPhase = '' - runHook preInstall - - export ICAInstDir="$out/opt/citrix-icaclient" - - sed -i \ - -e 's,^main_install_menu$,install_ICA_client,g' \ - -e 's,^integrate_ICA_client(),alias integrate_ICA_client=true\nintegrate_ICA_client_old(),g' \ - -e 's,^ANSWER=""$,ANSWER="$INSTALLER_YES",' \ - -e 's,/bin/true,true,g' \ - ./${prefixWithBitness}/hinst - - # Run the installer... - bash ./${prefixWithBitness}/hinst CDROM "`pwd`" - - echo "Deleting broken links..." - for link in `find $ICAInstDir -type l ` - do - [ -f "$link" ] || rm -v "$link" - done - - echo "Expanding certificates..." - # As explained in https://wiki.archlinux.org/index.php/Citrix#Security_Certificates - pushd "$ICAInstDir/keystore/cacerts" - awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "cert." c ".pem"}' < ${cacert}/etc/ssl/certs/ca-bundle.crt - popd - - echo "Patching executables..." - find $ICAInstDir -type f -exec file {} \; | - grep 'ELF.*executable' | - cut -f 1 -d : | - grep -vi '\(.dll\|.so\)$' | # added as a workaround to https://github.com/NixOS/nixpkgs/issues/41729 - while read f - do - echo "Patching ELF intrepreter and rpath for $f" - chmod u+w "$f" - patchelf \ - --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \ - --set-rpath "$ICAInstDir:$libPath" "$f" - done - - echo "Wrapping wfica..." - mkdir "$out/bin" - - makeWrapper "$ICAInstDir/wfica" "$out/bin/wfica" \ - --add-flags "-icaroot $ICAInstDir" \ - --set ICAROOT "$ICAInstDir" \ - --set GTK_PATH "${gtk2.out}/lib/gtk-2.0:${gnome3.gnome-themes-extra}/lib/gtk-2.0" \ - --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ - --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ - --set LD_LIBRARY_PATH "$libPath" \ - --set NIX_REDIRECTS "/usr/share/zoneinfo=${tzdata}/share/zoneinfo:/etc/zoneinfo=${tzdata}/share/zoneinfo:/etc/timezone=$ICAInstDir/timezone" - - echo "We arbitrarily set the timezone to UTC. No known consequences at this point." - echo UTC > "$ICAInstDir/timezone" - - echo "Installing desktop item..." - mkdir -p $out/share/applications - cp ${desktopItem}/share/applications/* $out/share/applications - - # We introduce a dependency on the source file so that it need not be redownloaded everytime - echo $src >> "$out/share/nix_dependencies.pin" - - runHook postInstall - ''; - - meta = with stdenv.lib; { - license = stdenv.lib.licenses.unfree; - inherit homepage; - description = "Citrix Receiver"; - maintainers = with maintainers; [ obadz a1russell ma27 ]; - platforms = platforms.linux; - }; - }; - -in citrixReceiverForVersion (lib.getAttr version versionInfo) diff --git a/pkgs/applications/networking/remote/citrix-receiver/wrapper.nix b/pkgs/applications/networking/remote/citrix-receiver/wrapper.nix deleted file mode 100644 index 63587030b38..00000000000 --- a/pkgs/applications/networking/remote/citrix-receiver/wrapper.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ citrix_receiver, extraCerts ? [], symlinkJoin }: - -let - - mkCertCopy = certPath: - "cp ${certPath} $out/opt/citrix-icaclient/keystore/cacerts/"; - -in - -if builtins.length extraCerts == 0 then citrix_receiver else symlinkJoin { - name = "citrix-with-extra-certs-${citrix_receiver.version}"; - paths = [ citrix_receiver ]; - - postBuild = '' - ${builtins.concatStringsSep "\n" (map mkCertCopy extraCerts)} - - sed -i -E "s,-icaroot (.+citrix-icaclient),-icaroot $out/opt/citrix-icaclient," $out/bin/wfica - ''; -} diff --git a/pkgs/applications/networking/sync/rclone/default.nix b/pkgs/applications/networking/sync/rclone/default.nix index 52527f79303..3e93dcc4440 100644 --- a/pkgs/applications/networking/sync/rclone/default.nix +++ b/pkgs/applications/networking/sync/rclone/default.nix @@ -2,13 +2,13 @@ buildGoModule rec { pname = "rclone"; - version = "1.49.1"; + version = "1.49.2"; src = fetchFromGitHub { owner = pname; repo = pname; rev = "v${version}"; - sha256 = "0mjwp1j70dqa8k3zxhcnw85ddhagkpr7c59mv8kradv6mqqzmq9c"; + sha256 = "1a90fr7cw78qhwdgkjwshap345jk1ipm3nnk7xf3nayiyibvk5dg"; }; modSha256 = "158mpmy8q67dk1ks9p926n1670gsk7rhd0vpjh44f4g64ddnhk03"; diff --git a/pkgs/applications/office/paperless/default.nix b/pkgs/applications/office/paperless/default.nix index af2fd82ddb0..97088f36041 100644 --- a/pkgs/applications/office/paperless/default.nix +++ b/pkgs/applications/office/paperless/default.nix @@ -57,6 +57,12 @@ let cp -r --no-preserve=mode $src/src/* $src/LICENSE $srcDir ''; + postPatch = '' + # django-cors-headers 3.x requires a scheme for allowed hosts + substituteInPlace $out/share/paperless/paperless/settings.py \ + --replace "localhost:8080" "http://localhost:8080" + ''; + buildPhase = let # Paperless has explicit runtime checks that expect these binaries to be in PATH extraBin = lib.makeBinPath [ imagemagick7 ghostscript optipng tesseract unpaper ]; diff --git a/pkgs/applications/office/paperless/python-modules/django-crispy-forms.nix b/pkgs/applications/office/paperless/python-modules/django-crispy-forms.nix index c1e0f7da30f..465da386247 100644 --- a/pkgs/applications/office/paperless/python-modules/django-crispy-forms.nix +++ b/pkgs/applications/office/paperless/python-modules/django-crispy-forms.nix @@ -1,5 +1,5 @@ { lib, buildPythonPackage, fetchFromGitHub -, pytest, pytest-django, django }: +, pytest_4, pytest-django, django }: buildPythonPackage { pname = "django-crispy-forms"; @@ -19,7 +19,7 @@ buildPythonPackage { export sourceRoot=source- ''; - checkInputs = [ pytest pytest-django django ]; + checkInputs = [ pytest_4 pytest-django django ]; checkPhase = '' PYTHONPATH="$(pwd):$PYTHONPATH" \ diff --git a/pkgs/applications/office/scribus/unstable.nix b/pkgs/applications/office/scribus/unstable.nix index 2cd441794a4..eef57179b3e 100644 --- a/pkgs/applications/office/scribus/unstable.nix +++ b/pkgs/applications/office/scribus/unstable.nix @@ -1,6 +1,6 @@ { stdenv, fetchurl, mkDerivation, pkgconfig, cmake, qtbase, cairo, pixman, boost, cups, fontconfig, freetype, hunspell, libjpeg, libtiff, libxml2, lcms2, -podofo, poppler, poppler_data, python2, harfbuzz, qtimageformats, qttools }: +podofo, poppler, poppler_data, python2, harfbuzz, qtimageformats, qttools, harfbuzzFull }: let pythonEnv = python2.withPackages(ps: [ps.tkinter ps.pillow]); @@ -20,7 +20,7 @@ mkDerivation rec { buildInputs = [ qtbase cairo pixman boost cups fontconfig freetype hunspell libjpeg libtiff libxml2 lcms2 podofo poppler - poppler_data pythonEnv harfbuzz qtimageformats qttools + poppler_data pythonEnv harfbuzz qtimageformats qttools harfbuzzFull ]; meta = { diff --git a/pkgs/applications/office/softmaker/desktop_items.nix b/pkgs/applications/office/softmaker/desktop_items.nix new file mode 100644 index 00000000000..6975da06456 --- /dev/null +++ b/pkgs/applications/office/softmaker/desktop_items.nix @@ -0,0 +1,42 @@ +{ makeDesktopItem, pname, suiteName }: + +{ + planmaker = makeDesktopItem { + name = "${pname}-planmaker"; + desktopName = "${suiteName} PlanMaker"; + icon = "${pname}-pml.png"; + categories = "Application;Office;SpreadSheet;"; + exec = "${pname}-planmaker %F"; + mimeType = "application/x-pmd;application/x-pmdx;application/x-pmv;application/excel;application/x-excel;application/x-ms-excel;application/x-msexcel;application/x-sylk;application/x-xls;application/xls;application/vnd.ms-excel;application/vnd.stardivision.calc;application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;application/vnd.openxmlformats-officedocument.spreadsheetml.template;application/vnd.ms-excel.sheet.macroenabled.12;application/vnd.openxmlformats-officedocument.spreadsheetml.template;application/vnd.ms-excel.template.macroEnabled.12;application/x-dif;text/spreadsheet;text/csv;application/x-prn;application/vnd.ms-excel.sheet.binary.macroenabled.12;"; + extraEntries = '' + TryExec=${pname}-planmaker + StartupWMClass=pm + ''; + }; + + presentations = makeDesktopItem { + name = "${pname}-presentations"; + desktopName = "${suiteName} Presentations"; + icon = "${pname}-prl.png"; + categories = "Application;Office;Presentation;"; + exec = "${pname}-presentations %F"; + mimeType = "application/x-prdx;application/x-prvx;application/x-prsx;application/x-prd;application/x-prv;application/x-prs;application/ppt;application/mspowerpoint;application/vnd.ms-powerpoint;application/vnd.openxmlformats-officedocument.presentationml.presentation;application/vnd.ms-powerpoint.presentation.macroenabled.12;application/vnd.openxmlformats-officedocument.presentationml.template;application/vnd.ms-powerpoint.template.macroEnabled.12;application/vnd.ms-powerpoint.slideshow.macroenabled.12;application/vnd.openxmlformats-officedocument.presentationml.slideshow;"; + extraEntries = '' + TryExec=${pname}-presentations + StartupWMClass=pr + ''; + }; + + textmaker = makeDesktopItem { + name = "${pname}-textmaker"; + desktopName = "${suiteName} TextMaker"; + icon = "${pname}-tml.png"; + categories = "Application;Office;WordProcessor;"; + exec = "${pname}-textmaker %F"; + mimeType = "application/x-tmdx;application/x-tmvx;application/x-tmd;application/x-tmv;application/msword;application/vnd.ms-word;application/x-doc;text/rtf;application/rtf;application/vnd.oasis.opendocument.text;application/vnd.oasis.opendocument.text-template;application/vnd.stardivision.writer;application/vnd.sun.xml.writer;application/vnd.sun.xml.writer.template;application/vnd.openxmlformats-officedocument.wordprocessingml.document;application/vnd.ms-word.document.macroenabled.12;application/vnd.openxmlformats-officedocument.wordprocessingml.template;application/vnd.ms-word.template.macroenabled.12;application/x-pocket-word;application/x-dbf;application/msword-template;"; + extraEntries = '' + TryExec=${pname}-textmaker + StartupWMClass=tm + ''; + }; +} diff --git a/pkgs/applications/office/softmaker/freeoffice.nix b/pkgs/applications/office/softmaker/freeoffice.nix new file mode 100644 index 00000000000..f3e37943bb6 --- /dev/null +++ b/pkgs/applications/office/softmaker/freeoffice.nix @@ -0,0 +1,15 @@ +{ callPackage, fetchurl, ... } @ args: + +callPackage ./generic.nix (args // rec { + pname = "freeoffice"; + version = "970"; + edition = "2018"; + suiteName = "FreeOffice"; + + src = fetchurl { + url = "https://www.softmaker.net/down/softmaker-freeoffice-${version}-amd64.tgz"; + sha256 = "1maibr4x8mksb32ixvyy2rjn4x9f51191p5fcdj5qwz32pf8h2dr"; + }; + + archive = "freeoffice${edition}.tar.lzma"; +}) diff --git a/pkgs/applications/office/softmaker/generic.nix b/pkgs/applications/office/softmaker/generic.nix new file mode 100644 index 00000000000..9505271db14 --- /dev/null +++ b/pkgs/applications/office/softmaker/generic.nix @@ -0,0 +1,95 @@ +{ stdenv, fetchurl, autoPatchelfHook, makeDesktopItem, makeWrapper + + # Dynamic Libraries +, curl, libGL, libX11, libXext, libXmu, libXrandr, libXrender + +, pname, version, edition, suiteName, src, archive + +, ... +}: + +let + desktopItems = import ./desktop_items.nix { + inherit makeDesktopItem pname suiteName; + }; + shortEdition = builtins.substring 2 2 edition; +in stdenv.mkDerivation rec { + inherit pname version edition shortEdition src; + nativeBuildInputs = [ + autoPatchelfHook + makeWrapper + ]; + + buildInputs = [ + curl + libGL + libX11 + libXext + libXmu + libXrandr + libXrender + stdenv.cc.cc.lib + ]; + + dontBuild = true; + dontConfigure = true; + + unpackPhase = '' + runHook preUnpack + + mkdir installer + tar -C installer -xf ${src} + mkdir ${pname} + tar -C ${pname} -xf installer/${archive} + + runHook postUnpack + ''; + + installPhase = '' + runHook preInstall + + mkdir -p $out/share + cp -r ${pname} $out/share/${pname}${edition} + + # Wrap rather than symlinking, so that the programs can determine + # their resource path. + mkdir -p $out/bin + makeWrapper $out/share/${pname}${edition}/planmaker $out/bin/${pname}-planmaker + makeWrapper $out/share/${pname}${edition}/presentations $out/bin/${pname}-presentations + makeWrapper $out/share/${pname}${edition}/textmaker $out/bin/${pname}-textmaker + + for size in 16 32 48 64 96 128 256 512 1024; do + mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps + + for app in pml prl tml; do + ln -s $out/share/${pname}${edition}/icons/''${app}_''${size}.png \ + $out/share/icons/hicolor/''${size}x''${size}/apps/${pname}-''${app}.png + done + + mkdir -p $out/share/icons/hicolor/''${size}x''${size}/mimetypes + + for mimetype in pmd prd tmd; do + ln -s $out/share/${pname}${edition}/icons/''${mimetype}_''${size}.png \ + $out/share/icons/hicolor/''${size}x''${size}/mimetypes/application-x-''${mimetype}.png + done + done + + # Add desktop items + ${desktopItems.planmaker.buildCommand} + ${desktopItems.presentations.buildCommand} + ${desktopItems.textmaker.buildCommand} + + # Add mime types + install -D -t $out/share/mime/packages ${pname}/mime/softmaker-*office*${shortEdition}.xml + + runHook postInstall + ''; + + meta = with stdenv.lib; { + description = "An office suite with a word processor, spreadsheet and presentation program"; + homepage = "https://www.softmaker.com/"; + license = licenses.unfree; + maintainers = with maintainers; [ danieldk ]; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/pkgs/applications/office/softmaker/softmaker_office.nix b/pkgs/applications/office/softmaker/softmaker_office.nix new file mode 100644 index 00000000000..26fe420d6a3 --- /dev/null +++ b/pkgs/applications/office/softmaker/softmaker_office.nix @@ -0,0 +1,15 @@ +{ callPackage, fetchurl, ... } @ args: + +callPackage ./generic.nix (args // rec { + pname = "softmaker-office"; + version = "970"; + edition = "2018"; + suiteName = "SoftMaker Office"; + + src = fetchurl { + url = "https://www.softmaker.net/down/softmaker-office-${edition}-${version}-amd64.tgz"; + sha256 = "14f94p1jms41s2iz5sa770rcyfp4mv01r6jjjis9amx37zrc8yid"; + }; + + archive = "office${edition}.tar.lzma"; +}) diff --git a/pkgs/applications/office/todoman/default.nix b/pkgs/applications/office/todoman/default.nix index 450ee34262b..7c5c8f72440 100644 --- a/pkgs/applications/office/todoman/default.nix +++ b/pkgs/applications/office/todoman/default.nix @@ -5,11 +5,11 @@ let in buildPythonApplication rec { pname = "todoman"; - version = "3.5.0"; + version = "3.6.0"; src = fetchPypi { inherit pname version; - sha256 = "051qjdpwif06x7qspnb4pfwdhb8nnmz99yqcp4kla5hv0n3jh0w9"; + sha256 = "1c0jh9bi2xfjc7w4kka68mygl00zkp2qxhffnipmfvvykfjmlhk0"; }; LOCALE_ARCHIVE = stdenv.lib.optionalString stdenv.isLinux @@ -19,7 +19,7 @@ buildPythonApplication rec { buildInputs = [ glibcLocales ]; propagatedBuildInputs = with python3.pkgs; - [ atomicwrites click click-log configobj humanize icalendar parsedatetime + [ atomicwrites click click-log click-repl configobj humanize icalendar parsedatetime python-dateutil pyxdg tabulate urwid ]; checkInputs = with python3.pkgs; diff --git a/pkgs/applications/science/biology/ants/default.nix b/pkgs/applications/science/biology/ants/default.nix index 834d2497e8d..6e1a2a3407e 100644 --- a/pkgs/applications/science/biology/ants/default.nix +++ b/pkgs/applications/science/biology/ants/default.nix @@ -1,9 +1,8 @@ -{ stdenv, fetchFromGitHub, fetchpatch, cmake, makeWrapper, itk, vtk }: +{ stdenv, fetchFromGitHub, fetchpatch, cmake, makeWrapper, itk4, vtk }: stdenv.mkDerivation rec { - _name = "ANTs"; - _version = "2.2.0"; - name = "${_name}-${_version}"; + pname = "ANTs"; + version = "2.2.0"; src = fetchFromGitHub { owner = "ANTsX"; @@ -21,7 +20,7 @@ stdenv.mkDerivation rec { ]; nativeBuildInputs = [ cmake makeWrapper ]; - buildInputs = [ itk vtk ]; + buildInputs = [ itk4 vtk ]; cmakeFlags = [ "-DANTS_SUPERBUILD=FALSE" "-DUSE_VTK=TRUE" ]; @@ -34,7 +33,7 @@ stdenv.mkDerivation rec { ''; meta = with stdenv.lib; { - homepage = https://github.com/ANTxS/ANTs; + homepage = https://github.com/ANTsX/ANTs; description = "Advanced normalization toolkit for medical image registration and other processing"; maintainers = with maintainers; [ bcdarwin ]; platforms = platforms.unix; diff --git a/pkgs/applications/science/biology/bcftools/default.nix b/pkgs/applications/science/biology/bcftools/default.nix index d8ffbb74e6b..33e4de0d95a 100644 --- a/pkgs/applications/science/biology/bcftools/default.nix +++ b/pkgs/applications/science/biology/bcftools/default.nix @@ -32,6 +32,6 @@ stdenv.mkDerivation rec { license = licenses.mit; homepage = http://www.htslib.org/; platforms = platforms.unix; - maintainers = [ maintainers.mimadrid ]; + maintainers = [ maintainers.mimame ]; }; } diff --git a/pkgs/applications/science/biology/igv/default.nix b/pkgs/applications/science/biology/igv/default.nix index 412b55f5916..04699a84b69 100644 --- a/pkgs/applications/science/biology/igv/default.nix +++ b/pkgs/applications/science/biology/igv/default.nix @@ -28,6 +28,6 @@ stdenv.mkDerivation rec { description = "A visualization tool for interactive exploration of genomic datasets"; license = licenses.lgpl21; platforms = platforms.unix; - maintainers = [ maintainers.mimadrid ]; + maintainers = [ maintainers.mimame ]; }; } diff --git a/pkgs/applications/science/biology/samtools/default.nix b/pkgs/applications/science/biology/samtools/default.nix index dd1a53472db..daa2925de7c 100644 --- a/pkgs/applications/science/biology/samtools/default.nix +++ b/pkgs/applications/science/biology/samtools/default.nix @@ -29,6 +29,6 @@ stdenv.mkDerivation rec { license = licenses.mit; homepage = http://www.htslib.org/; platforms = platforms.unix; - maintainers = [ maintainers.mimadrid ]; + maintainers = [ maintainers.mimame ]; }; } diff --git a/pkgs/applications/science/math/giac/default.nix b/pkgs/applications/science/math/giac/default.nix index ad82d7572e3..90b1b367a7c 100644 --- a/pkgs/applications/science/math/giac/default.nix +++ b/pkgs/applications/science/math/giac/default.nix @@ -104,9 +104,7 @@ stdenv.mkDerivation rec { description = "A free computer algebra system (CAS)"; homepage = "https://www-fourier.ujf-grenoble.fr/~parisse/giac.html"; license = licenses.gpl3Plus; - ## xcas is buildable on darwin but there are specific instructions I could - ## not test - platforms = platforms.linux; + platforms = platforms.unix; maintainers = [ maintainers.symphorien ]; }; } diff --git a/pkgs/applications/science/math/lrcalc/default.nix b/pkgs/applications/science/math/lrcalc/default.nix index eecb37dd743..f407358d8f2 100644 --- a/pkgs/applications/science/math/lrcalc/default.nix +++ b/pkgs/applications/science/math/lrcalc/default.nix @@ -35,6 +35,6 @@ stdenv.mkDerivation rec { homepage = http://math.rutgers.edu/~asbuch/lrcalc/; license = licenses.gpl2Plus; maintainers = with maintainers; [ timokau ]; - platforms = platforms.linux; + platforms = platforms.unix; }; } diff --git a/pkgs/applications/science/math/nauty/default.nix b/pkgs/applications/science/math/nauty/default.nix index bd116b02e29..e9c8b688fb9 100644 --- a/pkgs/applications/science/math/nauty/default.nix +++ b/pkgs/applications/science/math/nauty/default.nix @@ -37,7 +37,7 @@ stdenv.mkDerivation rec { description = ''Programs for computing automorphism groups of graphs and digraphs''; license = licenses.asl20; maintainers = with maintainers; [ raskin timokau ]; - platforms = platforms.linux; + platforms = platforms.unix; homepage = http://pallini.di.uniroma1.it/; }; } diff --git a/pkgs/applications/science/math/pynac/default.nix b/pkgs/applications/science/math/pynac/default.nix index 75a46bb182a..05c0c0e8ec6 100644 --- a/pkgs/applications/science/math/pynac/default.nix +++ b/pkgs/applications/science/math/pynac/default.nix @@ -43,6 +43,6 @@ stdenv.mkDerivation rec { homepage = http://pynac.org; license = licenses.gpl3; maintainers = with maintainers; [ timokau ]; - platforms = platforms.linux; + platforms = platforms.unix; }; } diff --git a/pkgs/applications/science/math/singular/default.nix b/pkgs/applications/science/math/singular/default.nix index ccb139203ac..fccd1489e11 100644 --- a/pkgs/applications/science/math/singular/default.nix +++ b/pkgs/applications/science/math/singular/default.nix @@ -110,7 +110,7 @@ stdenv.mkDerivation rec { description = "A CAS for polynomial computations"; maintainers = with maintainers; [ raskin timokau ]; # 32 bit x86 fails with some link error: `undefined reference to `__divmoddi4@GCC_7.0.0'` - platforms = subtractLists platforms.i686 platforms.linux; + platforms = subtractLists platforms.i686 platforms.unix; license = licenses.gpl3; # Or GPLv2 at your option - but not GPLv4 homepage = http://www.singular.uni-kl.de; downloadPage = "http://www.mathematik.uni-kl.de/ftp/pub/Math/Singular/SOURCES/"; diff --git a/pkgs/applications/science/math/weka/default.nix b/pkgs/applications/science/math/weka/default.nix index 90278a744f1..ec9ea0b8533 100644 --- a/pkgs/applications/science/math/weka/default.nix +++ b/pkgs/applications/science/math/weka/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { homepage = http://www.cs.waikato.ac.nz/ml/weka/; description = "Collection of machine learning algorithms for data mining tasks"; license = stdenv.lib.licenses.gpl2Plus; - maintainers = [ stdenv.lib.maintainers.mimadrid ]; + maintainers = [ stdenv.lib.maintainers.mimame ]; platforms = stdenv.lib.platforms.unix; }; } diff --git a/pkgs/applications/science/misc/cytoscape/default.nix b/pkgs/applications/science/misc/cytoscape/default.nix index 2e19012af87..8c8c09d25a0 100644 --- a/pkgs/applications/science/misc/cytoscape/default.nix +++ b/pkgs/applications/science/misc/cytoscape/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { homepage = http://www.cytoscape.org; description = "A general platform for complex network analysis and visualization"; license = stdenv.lib.licenses.lgpl21; - maintainers = [stdenv.lib.maintainers.mimadrid]; + maintainers = [stdenv.lib.maintainers.mimame]; platforms = stdenv.lib.platforms.unix; }; } diff --git a/pkgs/applications/version-management/meld/default.nix b/pkgs/applications/version-management/meld/default.nix index 168827c3548..5342a0697ab 100644 --- a/pkgs/applications/version-management/meld/default.nix +++ b/pkgs/applications/version-management/meld/default.nix @@ -60,6 +60,6 @@ python3.pkgs.buildPythonApplication rec { homepage = http://meldmerge.org/; license = licenses.gpl2; platforms = platforms.linux ++ platforms.darwin; - maintainers = with maintainers; [ jtojnar mimadrid ]; + maintainers = with maintainers; [ jtojnar mimame ]; }; } diff --git a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix index e7f6fad79f9..ad860b07bdf 100644 --- a/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix +++ b/pkgs/applications/virtualization/virtualbox/guest-additions/default.nix @@ -35,6 +35,11 @@ stdenv.mkDerivation { nativeBuildInputs = [ patchelf makeWrapper ]; buildInputs = [ cdrkit ] ++ kernel.moduleBuildDependencies; + postPatch = '' + substituteInPlace src/vboxguest-${version}/vboxvideo/vbox_ttm.c \ + --replace "<ttm/" "<drm/ttm/" + ''; + unpackPhase = '' ${if stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux" then '' isoinfo -J -i $src -x /VBoxLinuxAdditions.run > ./VBoxLinuxAdditions.run diff --git a/pkgs/applications/virtualization/xen/4.10.nix b/pkgs/applications/virtualization/xen/4.10.nix index 042b01e8678..d3c2ed9060c 100644 --- a/pkgs/applications/virtualization/xen/4.10.nix +++ b/pkgs/applications/virtualization/xen/4.10.nix @@ -38,11 +38,11 @@ let in callPackage (import ./generic.nix (rec { - version = "4.10.0"; + version = "4.10.4"; src = fetchurl { url = "https://downloads.xenproject.org/release/xen/${version}/xen-${version}.tar.gz"; - sha256 = "0i38ap5b5m1kix6xb0vn9ya1yab35adyc98bzfnbq4lb7w1afqh2"; + sha256 = "0ipkr7b3v3y183n6nfmz7q3gnzxa20011df4jpvxi6pmr8cpnkwh"; }; # Sources needed to build tools and firmwares. @@ -52,12 +52,9 @@ callPackage (import ./generic.nix (rec { url = https://xenbits.xen.org/git-http/qemu-xen.git; # rev = "refs/tags/qemu-xen-${version}"; # use revision hash - reproducible but must be updated with each new version - rev = "b79708a8ed1b3d18bee67baeaf33b3fa529493e2"; - sha256 = "1yxxad6nvlfmrbgyc8ix19qmrsn1rx4zpyiqnfi4x4kg94acwa5w"; + rev = "qemu-xen-${version}"; + sha256 = "0laxvhdjz1njxjvq3jzw2yqvdr9gdn188kqjf2gcrfzgih7xv2ym"; }; - patches = [ - qemuMemfdBuildFix - ]; buildInputs = qemuDeps; postPatch = '' # needed in build but /usr/bin/env is not available in sandbox @@ -151,17 +148,16 @@ callPackage (import ./generic.nix (rec { ++ optional (withOVMF) "--with-system-ovmf=${OVMF.fd}/FV/OVMF.fd" ++ optional (withInternalOVMF) "--enable-ovmf"; - patches = with xsa; flatten [ - XSA_252 - XSA_253 - XSA_255_1 - XSA_255_2 - XSA_256 + NIX_CFLAGS_COMPILE = [ + # Fix build on Glibc 2.24. + "-Wno-error=deprecated-declarations" + # Fix build with GCC 8 + "-Wno-error=maybe-uninitialized" + "-Wno-error=stringop-truncation" + "-Wno-error=format-truncation" + "-Wno-error=array-bounds" ]; - # Fix build on Glibc 2.24. - NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations"; - postPatch = '' # Avoid a glibc >= 2.25 deprecation warnings that get fatal via -Werror. sed 1i'#include <sys/sysmacros.h>' \ diff --git a/pkgs/applications/virtualization/xen/4.8.nix b/pkgs/applications/virtualization/xen/4.8.nix index 1608fabf4b2..c7568d99062 100644 --- a/pkgs/applications/virtualization/xen/4.8.nix +++ b/pkgs/applications/virtualization/xen/4.8.nix @@ -167,8 +167,15 @@ callPackage (import ./generic.nix (rec { xenpmdpatch ]; - # Fix build on Glibc 2.24. - NIX_CFLAGS_COMPILE = "-Wno-error=deprecated-declarations"; + NIX_CFLAGS_COMPILE = [ + # Fix build on Glibc 2.24 + "-Wno-error=deprecated-declarations" + # Fix build with GCC8 + "-Wno-error=maybe-uninitialized" + "-Wno-error=stringop-truncation" + "-Wno-error=format-truncation" + "-Wno-error=array-bounds" + ]; postPatch = '' # Avoid a glibc >= 2.25 deprecation warnings that get fatal via -Werror. diff --git a/pkgs/applications/virtualization/xen/xsa-patches.nix b/pkgs/applications/virtualization/xen/xsa-patches.nix index de692820d8f..26cdbc1f65f 100644 --- a/pkgs/applications/virtualization/xen/xsa-patches.nix +++ b/pkgs/applications/virtualization/xen/xsa-patches.nix @@ -66,30 +66,12 @@ in { sha256 = "0nnznkrvfbbc8z64dr9wvbdijd4qbpc0wz2j5vpmx6b32sm7932f"; }); - # 4.8 - XSA_202 = (xsaPatch { - name = "202"; - sha256 = "0j1d5akcjgx8w2c6w6p9znv77fkmps0880m2xgpbgs1ra9grshm1"; - }); - - # 4.8 - XSA_203 = (xsaPatch { - name = "203"; - sha256 = "1s1q7xskvpg87ivwfaiqr0cj3ajdkhkhpmpikfkvq127h8hhmd8j"; - }); - # 4.5 XSA_204_45 = (xsaPatch { name = "204-4.5"; sha256 = "083z9pbdz3f532fnzg7n2d5wzv6rmqc0f4mvc3mnmkd0rzqw8vcp"; }); - # 4.8 - XSA_204 = (xsaPatch { - name = "204-4.8"; - sha256 = "0rs498s4w2alz3h6jhlr2y0ni630vhggmxbrd1p1p3gcv8p6zzrr"; - }); - # 4.5 XSA_206_45 = [ (xsaPatch { @@ -190,86 +172,12 @@ in { }) ]; - # 4.8 - XSA_206 = [ - (xsaPatch { - name = "206-4.8/0001-xenstored-apply-a-write-transaction-rate-limit"; - sha256 = "1c81d93i3qx7l38f9af0sd84w5x51zvn262mzl25ilcklql4kzl6"; - }) - (xsaPatch { - name = "206-4.8/0002-xenstored-Log-when-the-write-transaction-rate-limit-"; - sha256 = "0b8iw409wi1x6p0swpnr51lcdlla1lgxjv5f910sj4wl96bca84q"; - }) - (xsaPatch { - name = "206-4.8/0003-oxenstored-comments-explaining-some-variables"; - sha256 = "1d3n0y9syya4kaavrvqn01d3wsn85gmw7qrbylkclznqgkwdsr2p"; - }) - (xsaPatch { - name = "206-4.8/0004-oxenstored-handling-of-domain-conflict-credit"; - sha256 = "020rw7hgc0dmhr4admz91kd99b4z1bdpji47nsy1255bjgvwc01k"; - }) - (xsaPatch { - name = "206-4.8/0005-oxenstored-ignore-domains-with-no-conflict-credit"; - sha256 = "1ilhcgyn803bxvfbqv0ihfrh9jfpp0lidkv7i4613f9v9vjm8q0h"; - }) - (xsaPatch { - name = "206-4.8/0006-oxenstored-add-transaction-info-relevant-to-history-"; - sha256 = "1dbd9pzda6hn9wj9pck44dlgz9nxvch3bzgrpaivanww8llxdfzz"; - }) - (xsaPatch { - name = "206-4.8/0007-oxenstored-support-commit-history-tracking"; - sha256 = "1jfr56c22fqkhj6fnv1ha7zsid86zm9l0nihpb8m932xgc4a6h9h"; - }) - (xsaPatch { - name = "206-4.8/0008-oxenstored-only-record-operations-with-side-effects-"; - sha256 = "1y845hj8krjdrirbd2jx4jqgnylwjv7bxnk7474lkld5kdnlbjyf"; - }) - (xsaPatch { - name = "206-4.8/0009-oxenstored-discard-old-commit-history-on-txn-end"; - sha256 = "1lcr9gz2b77x74sr1flfymyyz4xzs04iv88rc1633ibyqxmvk0lx"; - }) - (xsaPatch { - name = "206-4.8/0010-oxenstored-track-commit-history"; - sha256 = "1qwnivak4y038mpby75aaz0y70r0l3yc3hsz6wl5x0b74q6yy0ja"; - }) - (xsaPatch { - name = "206-4.8/0011-oxenstored-blame-the-connection-that-caused-a-transa"; - sha256 = "0p2w5ddyhc6d95dnlxzc5k77j063p02d53ab7m7ijfm7m6gknq8y"; - }) - (xsaPatch { - name = "206-4.8/0012-oxenstored-allow-self-conflicts"; - sha256 = "1571l81m30cbmqm4pk33q33p3dy58sfy2lnkl2wbgl2b3mkk657l"; - }) - (xsaPatch { - name = "206-4.8/0013-oxenstored-do-not-commit-read-only-transactions"; - sha256 = "15985wl635w22dddjyx5l97b5p6m55mzv5ygk7xr0jx7mi192f9x"; - }) - (xsaPatch { - name = "206-4.8/0014-oxenstored-don-t-wake-to-issue-no-conflict-credit"; - sha256 = "08672w4gaf2n3r8xy09h874gh5lg2vnrkjzq6xzvzdhdl092mipw"; - }) - (xsaPatch { - name = "206-4.8/0015-oxenstored-transaction-conflicts-improve-logging"; - sha256 = "0ck98ms0py8wjsc38pbx6222x7n6l90zckfa7m7nnszsyc0sxxad"; - }) - (xsaPatch { - name = "206-4.8/0016-oxenstored-trim-history-in-the-frequent_ops-function"; - sha256 = "014zs6i4gzrimn814k5i7gz66vbb0adkzr2qyai7i4fxc9h9r7w8"; - }) - ]; - # 4.5 - 4.8 XSA_207 = (xsaPatch { name = "207"; sha256 = "0wdlhijmw9mdj6a82pyw1rwwiz605dwzjc392zr3fpb2jklrvibc"; }); - # 4.8 - XSA_210 = (xsaPatch { - name = "210"; - sha256 = "02mykxqxnsrd0sr4ij022j8y7618wzi2a6j6j761vx8qgmh11xai"; - }); - # 4.5 - 4.8 XSA_212 = (xsaPatch { name = "212"; @@ -282,12 +190,6 @@ in { sha256 = "1vnqf89ydacr5bq3d6z2r33xb2sn5vsd934rncyc28ybc9rvj6wm"; }); - # 4.8 - XSA_213 = (xsaPatch { - name = "213-4.8"; - sha256 = "0ia3zr6r3bqy2h48fdy7p0iz423lniy3i0qkdvzgv5a8m80darr2"; - }); - # 4.5 - 4.8 XSA_214 = (xsaPatch { name = "214"; @@ -306,12 +208,6 @@ in { sha256 = "067pgsfrb9py2dhm1pk9g8f6fs40vyfrcxhj8c12vzamb6svzmn4"; }); - # 4.6 - 4.8 - XSA_217 = (xsaPatch { - name = "217"; - sha256 = "1khs5ilif14dzcm7lmikjzkwsrfzlmir1rgrgzkc411gf18ylzmj"; - }); - # 4.5 XSA_218_45 = [ (xsaPatch { @@ -332,46 +228,18 @@ in { }) ]; - # 4.8 - XSA_218 = [ - (xsaPatch { - name = "218-4.8/0001-gnttab-fix-unmap-pin-accounting-race"; - sha256 = "0r363frai239r2wmwxi48kcr50gbk5l64nja0h9lppi3z2y3dkdd"; - }) - (xsaPatch { - name = "218-4.8/0002-gnttab-Avoid-potential-double-put-of-maptrack-entry"; - sha256 = "07wm06i7frv7bsaykakx3g9h0hfqv96zcadvwf6wv194dggq1plc"; - }) - (xsaPatch { - name = "218-4.8/0003-gnttab-correct-maptrack-table-accesses"; - sha256 = "0ad0irc3p4dmla8sp3frxbh2qciji1dipkslh0xqvy2hyf9p80y9"; - }) - ]; - # 4.5 XSA_219_45 = (xsaPatch { name = "219-4.5"; sha256 = "003msr5vhsc66scmdpgn0lp3p01g4zfw5vj86y5lw9ajkbaywdsm"; }); - # 4.8 - XSA_219 = (xsaPatch { - name = "219-4.8"; - sha256 = "16q7kiamy86x8qdvls74wmq5j72kgzgdilryig4q1b21mp0ij1jq"; - }); - # 4.5 XSA_220_45 = (xsaPatch { name = "220-4.5"; sha256 = "1dj9nn6lzxlipjb3nb7b9m4337fl6yn2bd7ap1lqrjn8h9zkk1pp"; }); - # 4.8 - XSA_220 = (xsaPatch { - name = "220-4.8"; - sha256 = "0214qyqx7qap5y1pdi9fm0vz4y2fbyg71gaq36fisknj35dv2mh5"; - }); - # 4.5 - 4.8 XSA_221 = (xsaPatch { name = "221"; @@ -390,18 +258,6 @@ in { }) ]; - # 4.8 - XSA_222 = [ - (xsaPatch { - name = "222-1"; - sha256 = "0x02x4kqwfw255638fh2zcxwig1dy6kadlmqim1jgnjgmrvvqas2"; - }) - (xsaPatch { - name = "222-2-4.8"; - sha256 = "1xhyp6q3c5l8djh965g1i8201m2wvhms8k886h4sn30hks38giin"; - }) - ]; - # 4.5 - 4.8 XSA_223 = (xsaPatch { name = "223"; @@ -428,32 +284,6 @@ in { }) ]; - # 4.8 - XSA_224 = [ - (xsaPatch { - name = "224-4.8/0001-gnttab-Fix-handling-of-dev_bus_addr-during-unmap"; - sha256 = "1k326yan5811qzyvpdfkv801a19nyd09nsqayi8gyh58xx9c21m4"; - }) - (xsaPatch { - name = "224-4.8/0002-gnttab-never-create-host-mapping-unless-asked-to"; - sha256 = "06nj1x59bbx9hrj26xmvbw8z805lfqhld9hm0ld0fs6dmcpqzcck"; - }) - (xsaPatch { - name = "224-4.8/0003-gnttab-correct-logic-to-get-page-references-during-m"; - sha256 = "0kmag6fdsskgplcvzqp341yfi6pgc14wvjj58bp7ydb9hdk53qx2"; - }) - (xsaPatch { - name = "224-4.8/0004-gnttab-__gnttab_unmap_common_complete-is-all-or-noth"; - sha256 = "1ww80pi7jr4gjpymkcw8qxmr5as18b2asdqv35527nqprylsff9f"; - }) - ]; - - # 4.6 - 4.8 - XSA_225 = (xsaPatch { - name = "225"; - sha256 = "0lcp2bs0r849xnvhrdf8s821v36cqdbzk8lwz6chrjhjalk6ha2g"; - }); - # 4.5 XSA_226_45 = [ (xsaPatch { @@ -466,42 +296,12 @@ in { }) ]; - # 4.8 - 4.9 - XSA_226 = [ - (xsaPatch { - name = "226-4.9/0001-gnttab-dont-use-possibly-unbounded-tail-calls"; - sha256 = "1hx47ppv5q33cw4dwp82lgvv4fp28gx7rxijw0iaczsv8bvb8vcg"; - }) - (xsaPatch { - name = "226-4.9/0002-gnttab-fix-transitive-grant-handling"; - sha256 = "1gzp8m2zfihwlk71c3lqyd0ajh9h11pvkhzhw0mawckxy0qksvlc"; - }) - ]; - # 4.5 XSA_227_45 = (xsaPatch { name = "227-4.5"; sha256 = "1qfjfisgqm4x98qw54x2qrvgjnvvzizx9p1pjhcnsps9q6g1y3x8"; }); - # 4.8 - 4.9 - XSA_227 = (xsaPatch { - name = "227"; - sha256 = "0zdcm43i5n08rh7rrnb0fcssvd4fgawwmizsa16w2ak7pzvgmg94"; - }); - - # 4.8 - XSA_228_48 = (xsaPatch { - name = "228-4.8"; - sha256 = "085pnzwyv0rdb51hv5vhbhwfyxl0wg8sxcm912gjq8z7da5cv10n"; - }); - - # 4.9 - XSA_228 = (xsaPatch { - name = "228"; - sha256 = "0c9nvfpnr5ira7ha3fszhvvh71nsxrvmzrab56xwjhl2dbw2yy23"; - }); - # 4.5 - 4.9 XSA_230 = (xsaPatch { name = "230"; @@ -514,12 +314,6 @@ in { sha256 = "06gwx2f1lg51dfk2b4zxp7wv9c4pxdi87pg2asvmxqc78ir7l5s6"; }); - # 4.8 - 4.9 - XSA_231 = (xsaPatch { - name = "231-4.9"; - sha256 = "09r8xxq2fd52wrk6i0y0sk3nbidfg6pzzrkx327hfmdjj76iyz3b"; - }); - # 4.5 - 4.9 XSA_232 = (xsaPatch { name = "232"; @@ -538,42 +332,18 @@ in { sha256 = "1ji6hbgybb4gbgz5l5fis9midnvjbddzam8d63377rkzdyb3yz9f"; }); - # 4.8 - XSA_234_48 = (xsaPatch { - name = "234-4.8"; - sha256 = "08n1pf7z5y67dmay1ap39bi81clgkx82fpmfn7jsh8k4aw94jrsa"; - }); - - # 4.9 - XSA_234 = (xsaPatch { - name = "234-4.9"; - sha256 = "1znmxg432is0virw8321gax8zqq2zcmi2pc5p2j31sixylixsvzx"; - }); - # 4.5 XSA_235_45 = (xsaPatch { name = "235-4.5"; sha256 = "0hhgnql2gji111020z4wiyzg23wqs6ymanb67rg11p4qad1fp3ff"; }); - # 4.8 - 4.9 - XSA_235 = (xsaPatch { - name = "235-4.9"; - sha256 = "1rj4jkmh79wm30jq9f8x65qv3al8l91zc3m5s23q0x6abn3pfb9z"; - }); - # 4.5 XSA_236_45 = (xsaPatch { name = "236-4.5"; sha256 = "0hcla86x81wykssd2967gblp7fzx61290p4ls4v0hcyxdg2bs2yz"; }); - # 4.8 - 4.9 - XSA_236 = (xsaPatch { - name = "236-4.9"; - sha256 = "0vqxy7mgflga05l33j3488fwxmdw3p9yxj4ylhk9n3nw8id72ghq"; - }); - # 4.5 XSA_237_45 = [ (xsaPatch { @@ -598,78 +368,18 @@ in { }) ]; - # 4.8 - XSA_237_48 = [ - (xsaPatch { - name = "237-4.8/0001-x86-dont-allow-MSI-pIRQ-mapping-on-unowned-device"; - sha256 = "0qjisp37lwi2611mp7fbbm1s7m0bx726rrg79dnxs2mj0skw59iv"; - }) - (xsaPatch { - name = "237-4.8/0002-x86-enforce-proper-privilege-when-mapping-pIRQ-s"; - sha256 = "05q1dny13jrqhjfwak7r635mqp9chpibjvn8b7d90japc1nzpq62"; - }) - (xsaPatch { - name = "237-4.8/0003-x86-MSI-disallow-redundant-enabling"; - sha256 = "1907lv8nb2zhpb6k6jlw4m0hm0n0lyd69vfr3wpzbc56dn0w7jqd"; - }) - (xsaPatch { - name = "237-4.8/0004-x86-IRQ-conditionally-preserve-irq-pirq-mapping-on-error"; - sha256 = "06nrq0bx3p9ipab2r1why6qm4g32dj0x5q24hfkwc6ih0l9xwf8h"; - }) - (xsaPatch { - name = "237-4.8/0005-x86-FLASK-fix-unmap-domain-IRQ-XSM-hook"; - sha256 = "1nbg7bjw2hv55gnkhf6chkh35va6brs08acq1d5jxncl6kv0amc1"; - }) - ]; - - # 4.9 - XSA_237 = [ - (xsaPatch { - name = "237-4.9/0001-x86-dont-allow-MSI-pIRQ-mapping-on-unowned-device"; - sha256 = "1cbl24mqxa62h0wgsnrpcs6y6vs53znzj7g8dfsbmf74xwrd4px6"; - }) - (xsaPatch { - name = "237-4.9/0002-x86-enforce-proper-privilege-when-mapping-pIRQ-s"; - sha256 = "0p60148j18b78pxz0dx5ymh1gyrhg2cgmxq0jxmbk090bc4jql35"; - }) - (xsaPatch { - name = "237-4.9/0003-x86-MSI-disallow-redundant-enabling"; - sha256 = "1907lv8nb2zhpb6k6jlw4m0hm0n0lyd69vfr3wpzbc56dn0w7jqd"; - }) - (xsaPatch { - name = "237-4.9/0004-x86-IRQ-conditionally-preserve-irq-pirq-mapping-on-error"; - sha256 = "0q95z5641amni53agimnzbspva53p0hz5wl16zaz2yhnjasj5pzr"; - }) - (xsaPatch { - name = "237-4.9/0005-x86-FLASK-fix-unmap-domain-IRQ-XSM-hook"; - sha256 = "0bnqx9w7ppgx8wxj2zw09z0rkv1jzn3r0bd76cz0r22wz29fsdp2"; - }) - ]; - # 4.5 XSA_238_45 = (xsaPatch { name = "238-4.5"; sha256 = "1x2fg5vfv5jc084h5gjm6fq0nxjpzvi96px3sqzz4pvsvy4y4i1z"; }); - # 4.8 - 4.9 - XSA_238 = (xsaPatch { - name = "238"; - sha256 = "1cbmg1bi5ajh7qbwsl92ynaxw2c3p7i24p3wds81r4n93r0y5dxk"; - }); - # 4.5 XSA_239_45 = (xsaPatch { name = "239-4.5"; sha256 = "06bi8q3973yajxsdj7pcqarvb56q2gisxdiy0cpbyffbmpkfv3h6"; }); - # 4.8 - 4.9 - XSA_239 = (xsaPatch { - name = "239"; - sha256 = "1a9r8j7167s43ds5i7v7mm4y970vjnbhhkrjzpmzlcx8kcz96vh3"; - }); - # 4.5 XSA_240_45 = [ (xsaPatch { @@ -682,42 +392,12 @@ in { }) ]; - # 4.8 - XSA_240_48 = [ - (xsaPatch { - name = "240-4.8/0001-x86-limit-linear-page-table-use-to-a-single-level"; - sha256 = "0m44qhhqk2pdwqg8g28pypqrylq6iw00k9qrzf6qd0iza2y42kgj"; - }) - (xsaPatch { - name = "240-4.8/0002-x86-mm-Disable-PV-linear-pagetables-by-default"; - sha256 = "1jd720wvngj9wq3fprdhakxvqlff0jd8zcx2pd3vsn2qvjbvr2gf"; - }) - ]; - - # 4.9 - XSA_240 = [ - (xsaPatch { - name = "240-4.9/0001-x86-limit-linear-page-table-use-to-a-single-level"; - sha256 = "1759ni80aifakm44g4cc6pnmbcn1xjic8j66fvj0vibm0wqk6xck"; - }) - (xsaPatch { - name = "240-4.9/0002-x86-mm-Disable-PV-linear-pagetables-by-default"; - sha256 = "0g6dpi006p5cjxw5d8h33p0429fdmdm6nqzj0m63ralpqvns3ib5"; - }) - ]; - # 4.5 - 4.8 XSA_241 = (xsaPatch { name = "241-4.8"; sha256 = "16zb75kzs98f4mdxhbyczk5mbh9dvn6j3yhfafki34x1dfdnq4pj"; }); - # 4.9 - XSA_241_49 = (xsaPatch { - name = "241-4.9"; - sha256 = "0xlhin7wkhmlnbp9mqcbq3q4drdwb5la482ja9nwkhi8i867p6wc"; - }); - # 4.5 - 4.9 XSA_242 = (xsaPatch { name = "242-4.9"; @@ -736,30 +416,12 @@ in { }) ]; - # 4.8 - XSA_243_48 = (xsaPatch { - name = "243-4.8"; - sha256 = "1q60zn55l9wpq45nrxh0av59sjz0jg8pkjm1gkyywkdsgg4fg5z4"; - }); - - # 4.9 - XSA_243 = (xsaPatch { - name = "243"; - sha256 = "06fnbnh9zlsbkqih9ipnb7a8gly54m7lp17d854j1r370ad3c4yg"; - }); - # 4.5 XSA_244_45 = (xsaPatch { name = "244-4.5"; sha256 = "05ci3vdl1ywfjpzcvsy1k52whxjk8pxzj7dh3r94yqasr56i5v2l"; }); - # 4.8 - 4.9 - XSA_244 = (xsaPatch { - name = "244"; - sha256 = "10308xsgmhb0vg6fk0ql8v94zifv6dcv6vkaicryfp405yj2rzkm"; - }); - # 4.5 - 4.9 XSA_245 = [ (xsaPatch { @@ -780,26 +442,6 @@ in { }) ]; - # 4.8 - 4.9 - XSA_246 = [ - (xsaPatch { - name = "246-4.9"; - sha256 = "0z68vm0z5zvv9gm06pxs9kxq2q9fdbl0l0cm71ggzdplg1vw0snz"; - }) - ]; - - # 4.8 - XSA_247_48 = [ - (xsaPatch { - name = "247-4.8/0001-p2m-Always-check-to-see-if-removing-a-p2m-entry-actu"; - sha256 = "0kvjrk90n69s721c2qj2df5raml3pjk6bg80aig353p620w6s3xh"; - }) - (xsaPatch { - name = "247-4.8/0002-p2m-Check-return-value-of-p2m_set_entry-when-decreas"; - sha256 = "1s9kv6h6dd8psi5qf5l5gpk9qhq8blckwhl76cjbldcgi6imb3nr"; - }) - ]; - # 4.5 XSA_247_45 = [ (xsaPatch { @@ -820,14 +462,6 @@ in { }) ]; - # 4.8 - XSA_248_48 = [ - (xsaPatch { - name = "248-4.8"; - sha256 = "1ycw29q22ymxg18kxpr5p7vhpmp8klssbp5gq77hspxzz2mb96q1"; - }) - ]; - # 4.5 .. 4.9 XSA_249 = [ (xsaPatch { @@ -835,6 +469,7 @@ in { sha256 = "0v6ngzqhkz7yv4n83xlpxfbkr2qyg5b1cds7ikkinm86hiqy6agl"; }) ]; + # 4.5 XSA_250_45 = [ (xsaPatch { @@ -842,13 +477,7 @@ in { sha256 = "0pqldl6qnl834gvfp90z247q9xcjh3835s2iffnajz7jhjb2145d"; }) ]; - # 4.8 ... - XSA_250 = [ - (xsaPatch { - name = "250"; - sha256 = "1wpigg8kmha57sspqqln3ih9nbczsw6rx3v72mc62lh62qvwd7x8"; - }) - ]; + # 4.5 XSA_251_45 = [ (xsaPatch { @@ -856,81 +485,4 @@ in { sha256 = "0lc94cx271z09r0mhxaypyd9d4740051p28idf5calx5228dqjgm"; }) ]; - # 4.8 - XSA_251_48 = [ - (xsaPatch { - name = "251-4.8"; - sha256 = "079wi0j6iydid2zj7k584w2c393kgh588w7sjz2nn4039qn8k9mq"; - }) - ]; - # 4.8 - XSA_252_49 = [ - (xsaPatch { - name = "252-4.9"; - sha256 = "03sbn90nlkk5ba1n168rxjkc7x3mqj7rfqvspbwblmwikfbnms2n"; - }) - ]; - # 4.8 - XSA_255_49_1= [ - (xsaPatch { - name = "255-4.9-1"; - sha256 = "0gbin7yxbkq40lvm3gvj1vffavvbng3zpd2m8l1kqyz0rv4vm9zc"; - }) - ]; - # 4.8 - XSA_255_49_2= [ - (xsaPatch { - name = "255-4.9-2"; - sha256 = "0fyg5nnyfpfr80qq83pr64zjp5w1nx94bdblzsjap8gaqcahyr12"; - }) - ]; - # 4.8 - XSA_256_48= [ - (xsaPatch { - name = "256-4.8"; - sha256 = "1w84f717kxwx0h3rw18r4f8pl0l1h5xlj5fy80sr0ws4xkp1qdn4"; - }) - ]; - - - # 4.10 - XSA_252 = [ - (xsaPatch { - name = "252"; - sha256 = "0v4sg20dnvnwrjh3x69gk81v2kmcql7g2s044vg3wcxhzvij1rrn"; - }) - ]; - - # 4.10 - XSA_253 = [ - (xsaPatch { - name = "253"; - sha256 = "0445vzlzy3gd499xraqh5r4qjar6qr0y3813h22jy1n84nhxz27i"; - }) - ]; - - # 4.10 - XSA_255_1 = [ - (xsaPatch { - name = "255-1"; - sha256 = "05g2f3ji1rrjlw3yw4nrns50pnmsib8ybrf64scr1817mj0q9myr"; - }) - ]; - - # 4.10 - XSA_255_2 = [ - (xsaPatch { - name = "255-2"; - sha256 = "08wbngw5z0f9g8di59hww3hhi7j9z49bpc4xlwn5akfcwbgf0961"; - }) - ]; - - # 4.10 - XSA_256 = [ - (xsaPatch { - name = "256"; - sha256 = "1hicwhbwj6k25px55f4ncx1c5xiihi8pfvsb3kv57k7kaicb7pza"; - }) - ]; - } |