Merge branch 'master.upstream' into staging.upstream
This commit is contained in:
@@ -11,8 +11,8 @@
|
||||
, ncurses
|
||||
, version
|
||||
, zlib
|
||||
, libcxxabi
|
||||
, compiler-rt_src
|
||||
, libcxxabi
|
||||
, debugVersion ? false
|
||||
}:
|
||||
|
||||
|
||||
14
pkgs/development/compilers/openjdk/004_add-fontconfig.patch
Normal file
14
pkgs/development/compilers/openjdk/004_add-fontconfig.patch
Normal file
@@ -0,0 +1,14 @@
|
||||
This patch was downloaded from https://aur.archlinux.org/cgit/aur.git/tree/?h=java8-openjdk
|
||||
More info can be found at http://www.infinality.net/forum/viewtopic.php?f=2&t=275
|
||||
diff -ur a/jdk/make/lib/Awt2dLibraries.gmk b/jdk/make/lib/Awt2dLibraries.gmk
|
||||
--- a/jdk/make/lib/Awt2dLibraries.gmk 2015-07-13 20:50:59.000000000 +0300
|
||||
+++ b/jdk/make/lib/Awt2dLibraries.gmk 2015-08-24 12:12:22.930330643 +0300
|
||||
@@ -824,7 +824,7 @@
|
||||
LDFLAGS := $(subst -Xlinker -z -Xlinker defs,,$(LDFLAGS_JDKLIB)) $(LDFLAGS_CXX_JDK) \
|
||||
$(call SET_SHARED_LIBRARY_ORIGIN), \
|
||||
LDFLAGS_SUFFIX := $(BUILD_LIBFONTMANAGER_FONTLIB), \
|
||||
- LDFLAGS_SUFFIX_linux := -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
|
||||
+ LDFLAGS_SUFFIX_linux := -lfontconfig -lawt $(LIBM) $(LIBCXX) -ljava -ljvm -lc, \
|
||||
LDFLAGS_SUFFIX_solaris := -lawt -lawt_headless -lc $(LIBM) $(LIBCXX) -ljava -ljvm, \
|
||||
LDFLAGS_SUFFIX_aix := -lawt -lawt_headless $(LIBM) $(LIBCXX) -ljava -ljvm,\
|
||||
LDFLAGS_SUFFIX_macosx := -lawt $(LIBM) $(LIBCXX) -undefined dynamic_lookup \
|
||||
261
pkgs/development/compilers/openjdk/005_enable-infinality.patch
Normal file
261
pkgs/development/compilers/openjdk/005_enable-infinality.patch
Normal file
@@ -0,0 +1,261 @@
|
||||
This patch was downloaded from https://aur.archlinux.org/cgit/aur.git/tree/?h=java8-openjdk
|
||||
More info can be found at http://www.infinality.net/forum/viewtopic.php?f=2&t=275
|
||||
diff -ur a/jdk/src/share/native/sun/font/freetypeScaler.c b/jdk/src/share/native/sun/font/freetypeScaler.c
|
||||
--- a/jdk/src/share/native/sun/font/freetypeScaler.c 2014-09-14 16:28:06.108295959 +0200
|
||||
+++ b/jdk/src/share/native/sun/font/freetypeScaler.c 2014-09-14 16:28:45.569693174 +0200
|
||||
@@ -23,6 +23,9 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
+/* Use Infinality patches as default */
|
||||
+#define INFINALITY
|
||||
+
|
||||
#include "jni.h"
|
||||
#include "jni_util.h"
|
||||
#include "jlong.h"
|
||||
@@ -38,6 +41,10 @@
|
||||
#include FT_SIZES_H
|
||||
#include FT_OUTLINE_H
|
||||
#include FT_SYNTHESIS_H
|
||||
+#ifdef INFINALITY
|
||||
+#include FT_LCD_FILTER_H
|
||||
+#include <fontconfig/fontconfig.h>
|
||||
+#endif
|
||||
|
||||
#include "fontscaler.h"
|
||||
|
||||
@@ -676,6 +683,147 @@ static void CopyFTSubpixelVToSubpixel(co
|
||||
}
|
||||
}
|
||||
|
||||
+#ifdef INFINALITY
|
||||
+typedef struct {
|
||||
+ FT_Render_Mode ftRenderMode;
|
||||
+ int ftLoadFlags;
|
||||
+ FT_LcdFilter ftLcdFilter;
|
||||
+} RenderingProperties;
|
||||
+
|
||||
+static FcPattern* matchedPattern(const FcChar8* family, double ptSize) {
|
||||
+ /*
|
||||
+ we will create pattern to find our family and size in
|
||||
+ fontconfig configuration, and then will return it's
|
||||
+ properties:
|
||||
+ */
|
||||
+ FcPattern* fcPattern = 0;
|
||||
+ fcPattern = FcPatternCreate();
|
||||
+ FcValue fcValue;
|
||||
+ fcValue.type = FcTypeString;
|
||||
+ fcValue.u.s = family;
|
||||
+ FcPatternAdd(fcPattern, FC_FAMILY, fcValue, FcTrue);
|
||||
+ FcPatternAddBool(fcPattern, FC_SCALABLE, FcTrue);
|
||||
+ FcPatternAddDouble(fcPattern, FC_SIZE, ptSize);
|
||||
+ // TODO FcPatternAddInteger(pattern, FC_WEIGHT, weight_value);
|
||||
+ // TODO FcPatternAddInteger(pattern, FC_SLANT, slant_value);
|
||||
+ // TODO FcPatternAddDouble(pattern, FC_PIXEL_SIZE, size_value);
|
||||
+ // TODO FcPatternAddInteger(pattern, FC_WIDTH, stretch); 100 in most cases
|
||||
+ FcConfigSubstitute(0, fcPattern, FcMatchPattern);
|
||||
+ FcConfigSubstitute(0, fcPattern, FcMatchFont);
|
||||
+ FcDefaultSubstitute(fcPattern);
|
||||
+ FcResult res;
|
||||
+
|
||||
+ FcPattern *pattern = 0;
|
||||
+ pattern = FcFontMatch(0, fcPattern, &res);
|
||||
+ FcPatternDestroy(fcPattern);
|
||||
+ return pattern;
|
||||
+}
|
||||
+
|
||||
+static void readFontconfig(const FcChar8* family, double ptSize, jint aaType, RenderingProperties* rp) {
|
||||
+
|
||||
+ FcPattern *pattern = matchedPattern(family, ptSize);
|
||||
+
|
||||
+ int ftLoadFalgs = FT_LOAD_DEFAULT;
|
||||
+ FT_Render_Mode ftRenderMode;
|
||||
+ FT_LcdFilter ftLcdFilter;
|
||||
+ char horizontal = 1;
|
||||
+ FcBool b;
|
||||
+
|
||||
+ // subpixel order:
|
||||
+ if (aaType == TEXT_AA_ON)
|
||||
+ ftRenderMode = FT_RENDER_MODE_NORMAL;
|
||||
+ else if (aaType == TEXT_AA_OFF)
|
||||
+ ftRenderMode = FT_RENDER_MODE_MONO;
|
||||
+ else if (FcPatternGetBool(pattern, FC_ANTIALIAS, 0, &b) == FcResultMatch)
|
||||
+ if (b) {
|
||||
+ int subpixel = FC_RGBA_UNKNOWN;
|
||||
+ FcPatternGetInteger(pattern, FC_RGBA, 0, &subpixel);
|
||||
+ if (subpixel == FC_RGBA_UNKNOWN)
|
||||
+ subpixel = FC_RGBA_NONE;
|
||||
+ switch (subpixel) {
|
||||
+ case FC_RGBA_NONE:
|
||||
+ ftRenderMode = FT_RENDER_MODE_NORMAL;
|
||||
+ break;
|
||||
+ case FC_RGBA_RGB:
|
||||
+ case FC_RGBA_BGR:
|
||||
+ ftRenderMode = FT_RENDER_MODE_LCD;
|
||||
+ horizontal = 1;
|
||||
+ break;
|
||||
+ case FC_RGBA_VRGB:
|
||||
+ case FC_RGBA_VBGR:
|
||||
+ ftRenderMode = FT_RENDER_MODE_LCD_V;
|
||||
+ horizontal = 0;
|
||||
+ break;
|
||||
+ default:
|
||||
+ break;
|
||||
+ }
|
||||
+ } else {
|
||||
+ ftRenderMode = FT_RENDER_MODE_NORMAL;
|
||||
+ }
|
||||
+
|
||||
+ // loading mode:
|
||||
+ if (aaType == TEXT_AA_OFF)
|
||||
+ ftLoadFalgs |= FT_LOAD_TARGET_MONO;
|
||||
+ else {
|
||||
+ int hint_style = FC_HINT_NONE;
|
||||
+ FcPatternGetInteger(pattern, FC_HINT_STYLE, 0, &hint_style);
|
||||
+ switch (hint_style) {
|
||||
+ case FC_HINT_NONE:
|
||||
+ ftLoadFalgs |= FT_LOAD_NO_HINTING;
|
||||
+ break;
|
||||
+ case FC_HINT_SLIGHT:
|
||||
+ ftLoadFalgs |= FT_LOAD_TARGET_LIGHT;
|
||||
+ break;
|
||||
+ case FC_HINT_MEDIUM:
|
||||
+ ftLoadFalgs |= FT_LOAD_TARGET_NORMAL;
|
||||
+ break;
|
||||
+ case FC_HINT_FULL:
|
||||
+ if (aaType == TEXT_AA_ON)
|
||||
+ ftLoadFalgs |= FT_LOAD_TARGET_NORMAL;
|
||||
+ else
|
||||
+ ftLoadFalgs |= horizontal ? FT_LOAD_TARGET_LCD : FT_LOAD_TARGET_LCD_V;
|
||||
+ break;
|
||||
+ default:
|
||||
+ // what else to use as default?
|
||||
+ ftLoadFalgs |= FT_LOAD_TARGET_NORMAL;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ // autohinting:
|
||||
+ if (FcPatternGetBool(pattern, FC_AUTOHINT, 0, &b) == FcResultMatch)
|
||||
+ if (b)
|
||||
+ ftLoadFalgs |= FT_LOAD_FORCE_AUTOHINT;
|
||||
+
|
||||
+ // LCD filter:
|
||||
+ int filter = FC_LCD_DEFAULT;
|
||||
+ FcPatternGetInteger(pattern, FC_LCD_FILTER, 0, &filter);
|
||||
+ switch (filter) {
|
||||
+ case FC_LCD_NONE:
|
||||
+ ftLcdFilter = FT_LCD_FILTER_NONE;
|
||||
+ break;
|
||||
+ case FC_LCD_DEFAULT:
|
||||
+ ftLcdFilter = FT_LCD_FILTER_DEFAULT;
|
||||
+ break;
|
||||
+ case FC_LCD_LIGHT:
|
||||
+ ftLcdFilter = FT_LCD_FILTER_LIGHT;
|
||||
+ break;
|
||||
+ case FC_LCD_LEGACY:
|
||||
+ ftLcdFilter = FT_LCD_FILTER_LEGACY;
|
||||
+ break;
|
||||
+ default:
|
||||
+ // new unknown lcd filter type?! will use default one:
|
||||
+ ftLcdFilter = FT_LCD_FILTER_DEFAULT;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ FcPatternDestroy(pattern);
|
||||
+
|
||||
+ rp->ftRenderMode = ftRenderMode;
|
||||
+ rp->ftLoadFlags = ftLoadFalgs;
|
||||
+ rp->ftLcdFilter = ftLcdFilter;
|
||||
+}
|
||||
+#endif
|
||||
|
||||
/*
|
||||
* Class: sun_font_FreetypeFontScaler
|
||||
@@ -691,7 +839,9 @@ Java_sun_font_FreetypeFontScaler_getGlyp
|
||||
UInt16 width, height;
|
||||
GlyphInfo *glyphInfo;
|
||||
int glyph_index;
|
||||
+#ifndef INFINALITY
|
||||
int renderFlags = FT_LOAD_RENDER, target;
|
||||
+#endif
|
||||
FT_GlyphSlot ftglyph;
|
||||
|
||||
FTScalerContext* context =
|
||||
@@ -709,6 +859,11 @@ Java_sun_font_FreetypeFontScaler_getGlyp
|
||||
return ptr_to_jlong(getNullGlyphImage());
|
||||
}
|
||||
|
||||
+#ifdef INFINALITY
|
||||
+ RenderingProperties renderingProperties;
|
||||
+ readFontconfig((const FcChar8 *) scalerInfo->face->family_name,
|
||||
+ context->ptsz, context->aaType, &renderingProperties);
|
||||
+#else
|
||||
/* if algorithmic styling is required then we do not request bitmap */
|
||||
if (context->doBold || context->doItalize) {
|
||||
renderFlags = FT_LOAD_DEFAULT;
|
||||
@@ -731,10 +886,17 @@ Java_sun_font_FreetypeFontScaler_getGlyp
|
||||
target = FT_LOAD_TARGET_LCD_V;
|
||||
}
|
||||
renderFlags |= target;
|
||||
+#endif
|
||||
|
||||
glyph_index = FT_Get_Char_Index(scalerInfo->face, glyphCode);
|
||||
|
||||
+#ifdef INFINALITY
|
||||
+ FT_Library_SetLcdFilter(scalerInfo->library, renderingProperties.ftLcdFilter);
|
||||
+ error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderingProperties.ftLoadFlags);
|
||||
+#else
|
||||
error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderFlags);
|
||||
+#endif
|
||||
+
|
||||
if (error) {
|
||||
//do not destroy scaler yet.
|
||||
//this can be problem of particular context (e.g. with bad transform)
|
||||
@@ -753,9 +915,13 @@ Java_sun_font_FreetypeFontScaler_getGlyp
|
||||
|
||||
/* generate bitmap if it is not done yet
|
||||
e.g. if algorithmic styling is performed and style was added to outline */
|
||||
+#ifdef INFINALITY
|
||||
+ FT_Render_Glyph(ftglyph, renderingProperties.ftRenderMode);
|
||||
+#else
|
||||
if (ftglyph->format == FT_GLYPH_FORMAT_OUTLINE) {
|
||||
FT_Render_Glyph(ftglyph, FT_LOAD_TARGET_MODE(target));
|
||||
}
|
||||
+#endif
|
||||
|
||||
width = (UInt16) ftglyph->bitmap.width;
|
||||
height = (UInt16) ftglyph->bitmap.rows;
|
||||
@@ -969,7 +1135,9 @@ Java_sun_font_FreetypeFontScaler_getGlyp
|
||||
static FT_Outline* getFTOutline(JNIEnv* env, jobject font2D,
|
||||
FTScalerContext *context, FTScalerInfo* scalerInfo,
|
||||
jint glyphCode, jfloat xpos, jfloat ypos) {
|
||||
+#ifndef INFINALITY
|
||||
int renderFlags;
|
||||
+#endif
|
||||
int glyph_index;
|
||||
FT_Error error;
|
||||
FT_GlyphSlot ftglyph;
|
||||
@@ -984,11 +1152,22 @@ static FT_Outline* getFTOutline(JNIEnv*
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+#ifdef INFINALITY
|
||||
+ RenderingProperties renderingProperties;
|
||||
+ readFontconfig((const FcChar8 *) scalerInfo->face->family_name,
|
||||
+ context->ptsz, context->aaType, &renderingProperties);
|
||||
+#else
|
||||
renderFlags = FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP;
|
||||
+#endif
|
||||
|
||||
glyph_index = FT_Get_Char_Index(scalerInfo->face, glyphCode);
|
||||
|
||||
+#ifdef INFINALITY
|
||||
+ error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderingProperties.ftLoadFlags);
|
||||
+#else
|
||||
error = FT_Load_Glyph(scalerInfo->face, glyphCode, renderFlags);
|
||||
+#endif
|
||||
+
|
||||
if (error) {
|
||||
return NULL;
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
, alsaLib, bootjdk, cacert, perl, liberation_ttf, fontconfig, zlib
|
||||
, setJavaClassPath
|
||||
, minimal ? false
|
||||
, enableInfinality ? true # font rendering patch
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -80,7 +81,10 @@ let
|
||||
./fix-java-home-jdk8.patch
|
||||
./read-truststore-from-env-jdk8.patch
|
||||
./currency-date-range-jdk8.patch
|
||||
];
|
||||
] ++ (if enableInfinality then [
|
||||
./004_add-fontconfig.patch
|
||||
./005_enable-infinality.patch
|
||||
] else []);
|
||||
|
||||
preConfigure = ''
|
||||
chmod +x configure
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
{ stdenv, callPackage }:
|
||||
|
||||
callPackage ./generic.nix {
|
||||
shortVersion = "1.3.0";
|
||||
shortVersion = "1.4.0";
|
||||
isRelease = true;
|
||||
forceBundledLLVM = false;
|
||||
configureFlags = [ "--release-channel=stable" ];
|
||||
srcSha = "14lhk40n9aslz8h8wj7fas5vsgyrb38b2r319q3hlvplgggdksg8";
|
||||
srcSha = "13wpi9nb3h6wwck2mxhza85fahzcwgas00w8m25086v34dha4dp1";
|
||||
|
||||
/* Rust is bootstrapped from an earlier built version. We need
|
||||
to fetch these earlier versions, which vary per platform.
|
||||
@@ -14,14 +15,14 @@ callPackage ./generic.nix {
|
||||
for the tagged release and not a snapshot in the current HEAD.
|
||||
*/
|
||||
|
||||
snapshotHashLinux686 = "3459275cdf3896f678e225843fa56f0d9fdbabe8";
|
||||
snapshotHashLinux64 = "e451e3bd6e5fcef71e41ae6f3da9fb1cf0e13a0c";
|
||||
snapshotHashDarwin686 = "428944a7984c0988e77909d82ca2ef77d96a1fbd";
|
||||
snapshotHashDarwin64 = "b0515bb7d2892b9a58282fc865fee11a885406d6";
|
||||
snapshotDate = "2015-07-26";
|
||||
snapshotRev = "a5c12f4";
|
||||
snapshotHashLinux686 = "e2553bf399cd134a08ef3511a0a6ab0d7a667216";
|
||||
snapshotHashLinux64 = "7df8ba9dec63ec77b857066109d4b6250f3d222f";
|
||||
snapshotHashDarwin686 = "29750870c82a0347f8b8b735a4e2e0da26f5098d";
|
||||
snapshotHashDarwin64 = "c9f2c588238b4c6998190c3abeb33fd6164099a2";
|
||||
snapshotDate = "2015-08-11";
|
||||
snapshotRev = "1af31d4";
|
||||
|
||||
# cc-ar-opts.patch should be removable in 1.4.0+
|
||||
patches = [ ./patches/remove-uneeded-git.patch ./patches/cc-ar-opts.patch ]
|
||||
patches = [ ./patches/remove-uneeded-git.patch ]
|
||||
++ stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch;
|
||||
}
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
{ stdenv, callPackage }:
|
||||
|
||||
callPackage ./generic.nix {
|
||||
shortVersion = "2015-10-17";
|
||||
shortVersion = "2015-11-01";
|
||||
isRelease = false;
|
||||
forceBundledLLVM = true;
|
||||
srcRev = "20a6938c0";
|
||||
srcSha = "18dalmwmyw2csnm72qwkkh37ixxbrn2i5lmwp2q0x9plh5qj5627";
|
||||
srcRev = "1a2eaffb6";
|
||||
srcSha = "17b8zgz8j5dmz489b4zs2q4igc9x2v4isgqg3i5nzhacghxjqfyy";
|
||||
|
||||
/* Rust is bootstrapped from an earlier built version. We need
|
||||
to fetch these earlier versions, which vary per platform.
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
From c97759699264c6b1fa0e88420cd3c720df25e594 Mon Sep 17 00:00:00 2001
|
||||
From: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
|
||||
Date: Tue, 11 Aug 2015 01:09:21 +0200
|
||||
Subject: [PATCH] rustc_back: add configure options for default linker and ar
|
||||
|
||||
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
|
||||
---
|
||||
configure | 4 ++++
|
||||
mk/target.mk | 4 ++++
|
||||
src/librustc_back/target/mod.rs | 4 ++--
|
||||
3 files changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 071788c..dc9d7d7 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -607,6 +607,10 @@ valopt aarch64-linux-android-ndk "" "aarch64-linux-android NDK standalone path"
|
||||
valopt release-channel "dev" "the name of the release channel to build"
|
||||
valopt musl-root "/usr/local" "MUSL root installation directory"
|
||||
|
||||
+# Used on systems where "cc" and "ar" are unavailable
|
||||
+valopt default-linker "cc" "the default linker"
|
||||
+valopt default-ar "ar" "the default ar"
|
||||
+
|
||||
# Many of these are saved below during the "writing configuration" step
|
||||
# (others are conditionally saved).
|
||||
opt_nosave manage-submodules 1 "let the build manage the git submodules"
|
||||
diff --git a/mk/target.mk b/mk/target.mk
|
||||
index aae66c4..408ab96 100644
|
||||
--- a/mk/target.mk
|
||||
+++ b/mk/target.mk
|
||||
@@ -13,6 +13,10 @@
|
||||
# this exists can be found on issue #2400
|
||||
export CFG_COMPILER_HOST_TRIPLE
|
||||
|
||||
+# Used as defaults for the runtime ar and cc tools
|
||||
+export CFG_DEFAULT_LINKER
|
||||
+export CFG_DEFAULT_AR
|
||||
+
|
||||
# The standard libraries should be held up to a higher standard than any old
|
||||
# code, make sure that these common warnings are denied by default. These can
|
||||
# be overridden during development temporarily. For stage0, we allow warnings
|
||||
diff --git a/src/librustc_back/target/mod.rs b/src/librustc_back/target/mod.rs
|
||||
index d9cfdaa..542791a 100644
|
||||
--- a/src/librustc_back/target/mod.rs
|
||||
+++ b/src/librustc_back/target/mod.rs
|
||||
@@ -185,8 +185,8 @@ impl Default for TargetOptions {
|
||||
fn default() -> TargetOptions {
|
||||
TargetOptions {
|
||||
data_layout: String::new(),
|
||||
- linker: "cc".to_string(),
|
||||
- ar: "ar".to_string(),
|
||||
+ linker: option_env!("CFG_DEFAULT_LINKER").unwrap_or("cc").to_string(),
|
||||
+ ar: option_env!("CFG_DEFAULT_AR").unwrap_or("ar").to_string(),
|
||||
pre_link_args: Vec::new(),
|
||||
post_link_args: Vec::new(),
|
||||
cpu: "generic".to_string(),
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "sbcl-${version}";
|
||||
version = "1.2.16";
|
||||
version = "1.3.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/project/sbcl/sbcl/${version}/${name}-source.tar.bz2";
|
||||
sha256 = "08bg99dhjpvfi3fg4ak6c8kcrfb2ssdsfwwj46nfwniq0jmavacf";
|
||||
sha256 = "1cwrmvbx8m7n7wkcm16yz7qwx221giz7jskzkvy42pj919may36n";
|
||||
};
|
||||
|
||||
buildInputs = [ which ];
|
||||
|
||||
Reference in New Issue
Block a user