-
Notifications
You must be signed in to change notification settings - Fork 618
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
printerdemo takes more than 75 seconds to start #88
Comments
Amount of fonts:
|
What should happen: system font config reads config files and finds existing binary caches ready for use and mmaps them. What looks like is happening for you is that reading the config files produced tons of errors that look like the config belongs to a different font config version, and no caching is in effect. Is it possible that your system doesn’t have the font config dev packages installed? I think then the build will fall back to building its own font config. Ldd would also tell linkage. |
Right, no fontconfig in
Indeed the |
I agree. This happened twice now and it's not really an exotic library anymore :-) |
When the fontconfig dev package is not installed, servo-fontconfig will fall back to building its own copy, which may be incompatible with what's on the system. The result is a horrible start-up time and this patch opts to instead require fontconfig to be available at build time and error out otherwise. Fixes issue #88
When the fontconfig dev package is not installed, servo-fontconfig will fall back to building its own copy, which may be incompatible with what's on the system. The result is a horrible start-up time and this patch opts to instead require fontconfig to be available at build time and error out otherwise. Fixes issue #88
Pushed 7c7bec7 to master |
A better solution to this could be allowing fontconfig to be |
instead of servo-fontconfig servo-fontconfig statically links a vendored fontconfig library if fontconfig is not found by pkgconfig. Using a vendored fontconfig library instead of the system fontconfig library doesn't actually work well though: slint-ui/slint#88 Building a vendored copy of fontconfig is also problematic because fontconfig has a lot of C dependencies, which makes it difficult to cross compile the vendored copy of fontconfig: $ pkg-config fontconfig --static --libs -lfontconfig -lfreetype -lz -lbz2 -lpng16 -lm -lm -lz -lharfbuzz -lm -lglib-2.0 -lm -lpcre -lsysprof-capture-4 -pthread -lgraphite2 -lbrotlidec -lbrotlicommon -lxml2 -lz -llzma -lm Instead of using a vendored copy, with yeslogic/fontconfig-rs#12 yeslogic-fontconfig-sys will have a Cargo feature to dlopen fontconfig at runtime instead of linking it at build time. This is exposed in font-kit with the new source-fontconfig-dlopen feature, which is disabled by default. This feature makes it considerably easier to cross compile by avoiding the need to cross compile fontconfig and all its dependencies.
instead of servo-fontconfig servo-fontconfig statically links a vendored fontconfig library if fontconfig is not found by pkgconfig. Using a vendored fontconfig library instead of the system fontconfig library doesn't actually work well though: slint-ui/slint#88 Building a vendored copy of fontconfig is also problematic because fontconfig has a lot of C dependencies, which makes it difficult to cross compile the vendored copy of fontconfig: $ pkg-config fontconfig --static --libs -lfontconfig -lfreetype -lz -lbz2 -lpng16 -lm -lm -lz -lharfbuzz -lm -lglib-2.0 -lm -lpcre -lsysprof-capture-4 -pthread -lgraphite2 -lbrotlidec -lbrotlicommon -lxml2 -lz -llzma -lm Instead of using a vendored copy, with yeslogic/fontconfig-rs#12 yeslogic-fontconfig-sys will have a Cargo feature to dlopen fontconfig at runtime instead of linking it at build time. This is exposed in font-kit with the new source-fontconfig-dlopen feature, which is disabled by default. This feature makes it considerably easier to cross compile by avoiding the need to cross compile fontconfig and all its dependencies.
instead of servo-fontconfig servo-fontconfig statically links a vendored fontconfig library if fontconfig is not found by pkgconfig. Using a vendored fontconfig library instead of the system fontconfig library doesn't actually work well though: slint-ui/slint#88 Building a vendored copy of fontconfig is also problematic because fontconfig has a lot of C dependencies, which makes it difficult to cross compile the vendored copy of fontconfig: $ pkg-config fontconfig --static --libs -lfontconfig -lfreetype -lz -lbz2 -lpng16 -lm -lm -lz -lharfbuzz -lm -lglib-2.0 -lm -lpcre -lsysprof-capture-4 -pthread -lgraphite2 -lbrotlidec -lbrotlicommon -lxml2 -lz -llzma -lm Instead of using a vendored copy, with yeslogic/fontconfig-rs#12 yeslogic-fontconfig-sys will have a Cargo feature to dlopen fontconfig at runtime instead of linking it at build time. This is exposed in font-kit with the new source-fontconfig-dlopen feature, which is disabled by default. The feature can be enabled by setting the RUST_FONTCONFIG_DLOPEN environment variable to avoid needing to propagate the Cargo feature all the way through downstream Cargo.toml's. This feature makes it considerably easier to cross compile by avoiding the need to cross compile fontconfig and all its dependencies.
instead of servo-fontconfig servo-fontconfig statically links a vendored fontconfig library if fontconfig is not found by pkgconfig. Using a vendored fontconfig library instead of the system fontconfig library doesn't actually work well though: slint-ui/slint#88 Building a vendored copy of fontconfig is also problematic because fontconfig has a lot of C dependencies, which makes it difficult to cross compile the vendored copy of fontconfig: $ pkg-config fontconfig --static --libs -lfontconfig -lfreetype -lz -lbz2 -lpng16 -lm -lm -lz -lharfbuzz -lm -lglib-2.0 -lm -lpcre -lsysprof-capture-4 -pthread -lgraphite2 -lbrotlidec -lbrotlicommon -lxml2 -lz -llzma -lm Instead of using a vendored copy, with yeslogic/fontconfig-rs#12 yeslogic-fontconfig-sys will have a Cargo feature to dlopen fontconfig at runtime instead of linking it at build time. This is exposed in font-kit with the new source-fontconfig-dlopen feature, which is disabled by default. The feature can be enabled by setting the RUST_FONTCONFIG_DLOPEN environment variable to avoid needing to propagate the Cargo feature all the way through downstream Cargo.toml's. This feature makes it considerably easier to cross compile by avoiding the need to cross compile fontconfig and all its dependencies.
instead of servo-fontconfig servo-fontconfig statically links a vendored fontconfig library if fontconfig is not found by pkgconfig. Using a vendored fontconfig library instead of the system fontconfig library doesn't actually work well though: slint-ui/slint#88 Building a vendored copy of fontconfig is also problematic because fontconfig has a lot of C dependencies, which makes it difficult to cross compile the vendored copy of fontconfig: $ pkg-config fontconfig --static --libs -lfontconfig -lfreetype -lz -lbz2 -lpng16 -lm -lm -lz -lharfbuzz -lm -lglib-2.0 -lm -lpcre -lsysprof-capture-4 -pthread -lgraphite2 -lbrotlidec -lbrotlicommon -lxml2 -lz -llzma -lm Instead of using a vendored copy, with yeslogic/fontconfig-rs#12 yeslogic-fontconfig-sys will have a Cargo feature to dlopen fontconfig at runtime instead of linking it at build time. This is exposed in font-kit with the new source-fontconfig-dlopen feature, which is disabled by default. The feature can be enabled by setting the RUST_FONTCONFIG_DLOPEN environment variable to avoid needing to propagate the Cargo feature all the way through downstream Cargo.toml's. This feature makes it considerably easier to cross compile by avoiding the need to cross compile fontconfig and all its dependencies.
switch to yeslogic-fontconfig-sys instead of servo-fontconfig servo-fontconfig statically links a vendored fontconfig library if fontconfig is not found by pkgconfig. Using a vendored fontconfig library instead of the system fontconfig library doesn't actually work well though: slint-ui/slint#88 Building a vendored copy of fontconfig is also problematic because fontconfig has a lot of C dependencies, which makes it difficult to cross compile the vendored copy of fontconfig: ``` $ pkg-config fontconfig --static --libs -lfontconfig -lfreetype -lz -lbz2 -lpng16 -lm -lm -lz -lharfbuzz -lm -lglib-2.0 -lm -lpcre -lsysprof-capture-4 -pthread -lgraphite2 -lbrotlidec -lbrotlicommon -lxml2 -lz -llzma -lm ``` Instead of using a vendored copy, with yeslogic/fontconfig-rs#12 yeslogic-fontconfig-sys will have a Cargo feature to dlopen fontconfig at runtime instead of linking it at build time. This is exposed in font-kit with the new source-fontconfig-dlopen feature, which is disabled by default. This feature makes it considerably easier to cross compile by avoiding the need to cross compile fontconfig and all its dependencies.
instead of servo-fontconfig servo-fontconfig statically links a vendored fontconfig library if fontconfig is not found by pkgconfig. Using a vendored fontconfig library instead of the system fontconfig library doesn't actually work well though: slint-ui/slint#88 Building a vendored copy of fontconfig is also problematic because fontconfig has a lot of C dependencies, which makes it difficult to cross compile the vendored copy of fontconfig: $ pkg-config fontconfig --static --libs -lfontconfig -lfreetype -lz -lbz2 -lpng16 -lm -lm -lz -lharfbuzz -lm -lglib-2.0 -lm -lpcre -lsysprof-capture-4 -pthread -lgraphite2 -lbrotlidec -lbrotlicommon -lxml2 -lz -llzma -lm Instead of using a vendored copy, with yeslogic/fontconfig-rs#12 yeslogic-fontconfig-sys will have a Cargo feature to dlopen fontconfig at runtime instead of linking it at build time. This is exposed in font-kit with the new source-fontconfig-dlopen feature, which is disabled by default. The feature can be enabled by setting the RUST_FONTCONFIG_DLOPEN environment variable to avoid needing to propagate the Cargo feature all the way through downstream Cargo.toml's. This feature makes it considerably easier to cross compile by avoiding the need to cross compile fontconfig and all its dependencies.
switch to yeslogic-fontconfig-sys instead of servo-fontconfig servo-fontconfig statically links a vendored fontconfig library if fontconfig is not found by pkgconfig. Using a vendored fontconfig library instead of the system fontconfig library doesn't actually work well though: slint-ui/slint#88 Building a vendored copy of fontconfig is also problematic because fontconfig has a lot of C dependencies, which makes it difficult to cross compile the vendored copy of fontconfig: ``` $ pkg-config fontconfig --static --libs -lfontconfig -lfreetype -lz -lbz2 -lpng16 -lm -lm -lz -lharfbuzz -lm -lglib-2.0 -lm -lpcre -lsysprof-capture-4 -pthread -lgraphite2 -lbrotlidec -lbrotlicommon -lxml2 -lz -llzma -lm ``` Instead of using a vendored copy, with yeslogic/fontconfig-rs#12 yeslogic-fontconfig-sys will have a Cargo feature to dlopen fontconfig at runtime instead of linking it at build time. This is exposed in font-kit with the new source-fontconfig-dlopen feature, which is disabled by default. This feature makes it considerably easier to cross compile by avoiding the need to cross compile fontconfig and all its dependencies.
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: slint-ui#88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: slint-ui#88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: slint-ui#88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: slint-ui#88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: slint-ui#88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: slint-ui#88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: slint-ui#88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: slint-ui#88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: slint-ui#88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: slint-ui#88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: slint-ui#88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: slint-ui#88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: slint-ui#88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: #88
This allows setting the RUST_FONTCONFIG_DLOPEN environment variable to dlopen fontconfig at runtime rather than linking it at build time. This is helpful for cross compiling to Linux, particularly because fontconfig has lots of C dependencies. Building a vendored copy of fontconfig does not work as expected: #88
--release
, i.e. in debug modeWhen starting the printerdemo, it takes 75 seconds here until the content of the window is rendered. During that time, one core is constantly busy at 100% usage.
This is what it looks like in perf/hotspot:
Sample backtrace
I also see some messages in the console that might or might not be related:
Console Output
The text was updated successfully, but these errors were encountered: