Skip to content

Commit

Permalink
Pango: Hardcode "." as decimal point when building on pre API 21
Browse files Browse the repository at this point in the history
localconv unavail, will probably return "." anyways
  • Loading branch information
ViliusSutkus89 committed Dec 11, 2023
1 parent f3af3c1 commit bad990f
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 43 deletions.
12 changes: 2 additions & 10 deletions .github/workflows/pango.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,8 @@ on:
- '.github/workflows/pango.yml'

jobs:
build-pango-current:
name: pango 1.51.0
build:
name: pango
uses: ./.github/workflows/build.yml
with:
package: pango
version: 1.51.0

build-pango-legacy:
name: pango 1.49.4
uses: ./.github/workflows/build.yml
with:
package: pango
version: 1.49.4
75 changes: 42 additions & 33 deletions pango/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,8 @@ import org.gradle.jvm.tasks.Jar

group = rootProject.group

// Hardcode a list of available versions
val portVersion = when(project.findProperty("packageVersion")) {
"1.49.4" -> {
version = "1.49.4-beta-3"
"1.49.4"
}
else /* "1.51.0" */-> {
version = "1.51.0-beta-3"
"1.51.0"
}
}
val portVersion = "1.51.0"
version = "1.51.0-beta-4"

plugins {
id("maven-publish")
Expand All @@ -31,25 +22,50 @@ dependencies {
implementation("com.viliussutkus89.ndk.thirdparty:fribidi${ndkVersionSuffix}-static:1.0.13-beta-2")
implementation("com.viliussutkus89.ndk.thirdparty:glib2${ndkVersionSuffix}-static:2.78.1-beta-4")
implementation("com.viliussutkus89.ndk.thirdparty:harfbuzz${ndkVersionSuffix}-static:8.2.2-beta-3")

// Only needed for 1.49.4
// https://gitlab.gnome.org/GNOME/pango/-/commit/32115334662799c77d49b0e26161c44e580d5dd4
if (portVersion == "1.49.4") {
implementation("com.viliussutkus89.ndk.thirdparty:json-glib${ndkVersionSuffix}-static:1.8.0-beta-3")
}
}

ndkPorts {
ndkPath.set(File(project.findProperty("ndkPath") as String))
if (portVersion == "1.49.4") {
minSdkVersion.set(rootProject.extra.get("minSdkSupportedByNdk").toString().toInt())
} else {
// pango 1.50.0 uses localeconv, which requires sdk 21
minSdkVersion.set(21)
}
minSdkVersion.set(rootProject.extra.get("minSdkSupportedByNdk").toString().toInt())
source.set(project.file("${name}-${portVersion}.tar.xz"))
}

fun File.patch(patch: String): File {
return patch(projectDir.resolve("patches/$portVersion").resolve(patch))
}

fun File.patch(patch: File): File {
val pb = ProcessBuilder(
if (isFile) listOf("patch", "--ignore-whitespace", "-p0", absolutePath)
else listOf("patch", "--ignore-whitespace", "-p0")
)

if (isDirectory)
pb.directory(absoluteFile)

val process = pb.start()
process.outputStream.writer().use {
it.write(patch.readText())
}
process.errorStream.bufferedReader().use {
println(it.readText())
}
process.inputStream.bufferedReader().use {
println(it.readText())
}
if (process.waitFor() != 0) {
throw RuntimeException("Patch failed!\n")
}
return this
}

tasks.extractSrc {
doLast {
outDir.get().asFile.resolve("pango/pango-layout.c")
.patch("localeconv.patch")
}
}

tasks.prefab {
generator.set(PrefabSysrootPlugin::class.java)
}
Expand All @@ -70,11 +86,7 @@ tasks.prefabPackage {
"fribidi" to "1",
"glib2" to "1",
"harfbuzz" to "1",
).apply {
if (portVersion == "1.49.4") {
put("json-glib", "1")
}
})
))

modules {
create("pango-1.0") {
Expand All @@ -85,7 +97,6 @@ tasks.prefabPackage {
"//glib2:gobject-2.0",
"//glib2:gio-2.0",
"//fribidi:fribidi",
) + if (portVersion == "1.49.4") listOf("//json-glib:json-glib") else emptyList<String>() + listOf(
"//harfbuzz:harfbuzz",
"//fontconfig:fontconfig",
"//freetype:freetype",
Expand All @@ -102,7 +113,6 @@ tasks.prefabPackage {
"//glib2:gobject-2.0",
"//glib2:gio-2.0",
"//fribidi:fribidi",
) + if (portVersion == "1.49.4") listOf("//json-glib:json-glib") else emptyList<String>() + listOf(
"//harfbuzz:harfbuzz",
"//fontconfig:fontconfig",
"//freetype:freetype",
Expand All @@ -118,7 +128,6 @@ tasks.prefabPackage {
"//glib2:gobject-2.0",
"//glib2:gio-2.0",
"//fribidi:fribidi",
) + if (portVersion == "1.49.4") listOf("//json-glib:json-glib") else emptyList<String>() + listOf(
"//harfbuzz:harfbuzz",
"//fontconfig:fontconfig",
"//freetype:freetype",
Expand Down Expand Up @@ -148,13 +157,13 @@ publishing {
licenses {
license {
name.set("LGPLv2")
url.set("https://gitlab.gnome.org/GNOME/pango/-/raw/1.49.4/COPYING")
url.set("https://gitlab.gnome.org/GNOME/pango/-/raw/1.51.1/COPYING")
distribution.set("repo")
}
}
developers {
// Developer list obtained from:
// https://gitlab.gnome.org/GNOME/pango/-/blob/1.49.4/THANKS
// https://gitlab.gnome.org/GNOME/pango/-/blob/1.51.1/THANKS
developer {
name.set("Abigail Brady")
}
Expand Down
Binary file removed pango/pango-1.49.4.tar.xz
Binary file not shown.
15 changes: 15 additions & 0 deletions pango/patches/1.51.0/localeconv.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
--- pango/pango-layout.c 2023-12-11 02:20:38.698000000 +0200
+++ pango/pango-layout.c 2023-12-11 02:23:50.322000000 +0200
@@ -3466,7 +3466,11 @@
ensure_decimal (PangoLayout *layout)
{
if (layout->decimal == 0)
- layout->decimal = g_utf8_get_char (localeconv ()->decimal_point);
+ #if __ANDROID_API__ >= 21
+ layout->decimal = (localeconv ()->decimal_point);
+ #else
+ layout->decimal = g_utf8_get_char (".");
+ #endif
}

struct _LastTabState {

0 comments on commit bad990f

Please sign in to comment.