mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Fix building libservo with cargo build -p libservo
(#35116)
* Fix building libservo with `cargo build -p libservo` Signed-off-by: Delan Azabani <dazabani@igalia.com> * Test the libservo build in CI Signed-off-by: Delan Azabani <dazabani@igalia.com> * Work around build issue on macOS (#34517) Signed-off-by: Delan Azabani <dazabani@igalia.com> Co-authored-by: Martin Robinson <mrobinson@igalia.com> --------- Signed-off-by: Delan Azabani <dazabani@igalia.com> Co-authored-by: Martin Robinson <mrobinson@igalia.com>
This commit is contained in:
parent
935364b7bc
commit
0af1204aa3
11 changed files with 74 additions and 14 deletions
6
.github/workflows/dispatch-workflow.yml
vendored
6
.github/workflows/dispatch-workflow.yml
vendored
|
@ -17,6 +17,9 @@ on:
|
|||
unit-tests:
|
||||
required: true
|
||||
type: boolean
|
||||
build-libservo:
|
||||
required: true
|
||||
type: boolean
|
||||
bencher:
|
||||
required: true
|
||||
type: boolean
|
||||
|
@ -30,6 +33,7 @@ jobs:
|
|||
with:
|
||||
profile: ${{ inputs.profile }}
|
||||
unit-tests: ${{ inputs.unit-tests }}
|
||||
build-libservo: ${{ inputs.build-libservo }}
|
||||
bencher: ${{ inputs.bencher }}
|
||||
|
||||
macos:
|
||||
|
@ -41,6 +45,7 @@ jobs:
|
|||
profile: ${{ inputs.profile }}
|
||||
wpt-layout: ${{ inputs.wpt-layout }}
|
||||
unit-tests: ${{ inputs.unit-tests }}
|
||||
build-libservo: ${{ inputs.build-libservo }}
|
||||
wpt-args: ${{ inputs.wpt-args }}
|
||||
bencher: ${{ inputs.bencher }}
|
||||
|
||||
|
@ -53,6 +58,7 @@ jobs:
|
|||
profile: ${{ inputs.profile }}
|
||||
wpt-layout: ${{ inputs.wpt-layout }}
|
||||
unit-tests: ${{ inputs.unit-tests }}
|
||||
build-libservo: ${{ inputs.build-libservo }}
|
||||
wpt-args: ${{ inputs.wpt-args }}
|
||||
bencher: ${{ inputs.bencher }}
|
||||
|
||||
|
|
11
.github/workflows/linux.yml
vendored
11
.github/workflows/linux.yml
vendored
|
@ -21,6 +21,10 @@ on:
|
|||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
build-libservo:
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
upload:
|
||||
required: false
|
||||
default: false
|
||||
|
@ -59,6 +63,10 @@ on:
|
|||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
build-libservo:
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
upload:
|
||||
required: false
|
||||
default: false
|
||||
|
@ -165,6 +173,9 @@ jobs:
|
|||
timeout_minutes: 20
|
||||
max_attempts: 2 # https://github.com/servo/servo/issues/30683
|
||||
command: ./mach test-unit --${{ inputs.profile }}
|
||||
- name: Build libservo
|
||||
if: ${{ inputs.build-libservo }}
|
||||
run: cargo build -p libservo
|
||||
- name: Archive build timing
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
|
|
11
.github/workflows/mac.yml
vendored
11
.github/workflows/mac.yml
vendored
|
@ -18,6 +18,10 @@ on:
|
|||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
build-libservo:
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
upload:
|
||||
required: false
|
||||
default: false
|
||||
|
@ -52,6 +56,10 @@ on:
|
|||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
build-libservo:
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
upload:
|
||||
required: false
|
||||
default: false
|
||||
|
@ -152,6 +160,9 @@ jobs:
|
|||
timeout_minutes: 40 # https://github.com/servo/servo/issues/30275
|
||||
max_attempts: 3 # https://github.com/servo/servo/issues/30683
|
||||
command: ./mach test-unit --${{ inputs.profile }}
|
||||
- name: Build libservo
|
||||
if: ${{ inputs.build-libservo }}
|
||||
run: cargo build -p libservo
|
||||
- name: Build mach package
|
||||
run: ./mach package --${{ inputs.profile }}
|
||||
- name: Run DMG smoketest
|
||||
|
|
3
.github/workflows/main.yml
vendored
3
.github/workflows/main.yml
vendored
|
@ -35,7 +35,7 @@ jobs:
|
|||
run: |
|
||||
{
|
||||
echo 'result<<EOF'
|
||||
python ./python/servo/try_parser.py ${{ github.event_name == 'pull_request' && 'linux-unit-tests lint' || github.event_name == 'push' && 'fail-fast full bencher production-bencher' || 'fail-fast full' }}
|
||||
python ./python/servo/try_parser.py ${{ github.event_name == 'pull_request' && 'linux-unit-tests linux-build-libservo lint' || github.event_name == 'push' && 'fail-fast full bencher production-bencher' || 'fail-fast full' }}
|
||||
echo EOF
|
||||
} >> $GITHUB_OUTPUT
|
||||
|
||||
|
@ -54,6 +54,7 @@ jobs:
|
|||
wpt-layout: ${{ matrix.wpt_layout }}
|
||||
profile: ${{ matrix.profile }}
|
||||
unit-tests: ${{ matrix.unit_tests }}
|
||||
build-libservo: ${{ matrix.build_libservo }}
|
||||
wpt-args: ${{ matrix.wpt_args }}
|
||||
bencher: ${{ matrix.bencher }}
|
||||
|
||||
|
|
1
.github/workflows/try-label.yml
vendored
1
.github/workflows/try-label.yml
vendored
|
@ -137,6 +137,7 @@ jobs:
|
|||
wpt-layout: ${{ matrix.wpt_layout }}
|
||||
profile: ${{ matrix.profile }}
|
||||
unit-tests: ${{ matrix.unit_tests }}
|
||||
build-libservo: ${{ matrix.build_libservo }}
|
||||
wpt-args: ${{ matrix.wpt_args }}
|
||||
bencher: ${{ matrix.bencher }}
|
||||
|
||||
|
|
1
.github/workflows/try.yml
vendored
1
.github/workflows/try.yml
vendored
|
@ -107,6 +107,7 @@ jobs:
|
|||
wpt-layout: ${{ matrix.wpt_layout }}
|
||||
profile: ${{ matrix.profile }}
|
||||
unit-tests: ${{ matrix.unit_tests }}
|
||||
build-libservo: ${{ matrix.build_libservo }}
|
||||
wpt-args: ${{ matrix.wpt_args }}
|
||||
bencher: ${{ matrix.bencher }}
|
||||
|
||||
|
|
11
.github/workflows/windows.yml
vendored
11
.github/workflows/windows.yml
vendored
|
@ -11,6 +11,10 @@ on:
|
|||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
build-libservo:
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
upload:
|
||||
required: false
|
||||
default: false
|
||||
|
@ -37,6 +41,10 @@ on:
|
|||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
build-libservo:
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
upload:
|
||||
required: false
|
||||
default: false
|
||||
|
@ -168,6 +176,9 @@ jobs:
|
|||
timeout_minutes: 30
|
||||
max_attempts: 3 # https://github.com/servo/servo/issues/30683
|
||||
command: .\mach test-unit --${{ inputs.profile }} -- -- --test-threads=1
|
||||
- name: Build libservo
|
||||
if: ${{ inputs.build-libservo }}
|
||||
run: cargo build -p libservo
|
||||
- name: Archive build timing
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
|
|
|
@ -64,6 +64,7 @@ gstreamer-gl = "0.23"
|
|||
gstreamer-gl-sys = "0.23"
|
||||
gstreamer-sys = "0.23"
|
||||
gstreamer-video = "0.23"
|
||||
harfbuzz-sys = "0.6.1"
|
||||
headers = "0.4"
|
||||
hitrace = "0.1.4"
|
||||
html5ever = "0.29"
|
||||
|
|
|
@ -26,7 +26,8 @@ euclid = { workspace = true }
|
|||
fnv = { workspace = true }
|
||||
fontsan = { git = "https://github.com/servo/fontsan" }
|
||||
fonts_traits = { workspace = true }
|
||||
harfbuzz-sys = "0.6.1"
|
||||
# FIXME (#34517): macOS only needs this when building libservo without `--features media-gstreamer`
|
||||
harfbuzz-sys = { workspace = true, features = ["bundled"] }
|
||||
ipc-channel = { workspace = true }
|
||||
itertools = { workspace = true }
|
||||
libc = { workspace = true }
|
||||
|
@ -62,7 +63,6 @@ core-graphics = "0.23"
|
|||
core-text = "20.1"
|
||||
|
||||
[target.'cfg(any(target_os = "linux", target_os = "android"))'.dependencies]
|
||||
harfbuzz-sys = { version = "0.6", features = ["bundled"] }
|
||||
freetype-sys = { workspace = true }
|
||||
servo_allocator = { path = "../allocator" }
|
||||
|
||||
|
@ -72,11 +72,6 @@ fontconfig_sys = { package = "yeslogic-fontconfig-sys", version = "6" }
|
|||
[target.'cfg(target_os = "android")'.dependencies]
|
||||
xml-rs = "0.8"
|
||||
|
||||
[target.'cfg(target_env = "ohos")'.dependencies]
|
||||
harfbuzz-sys = { version = "0.6.1", features = ["bundled"] }
|
||||
|
||||
|
||||
[target.'cfg(target_os = "windows")'.dependencies]
|
||||
harfbuzz-sys = { version = "0.6", features = ["bundled"] }
|
||||
dwrote = "0.11.2"
|
||||
truetype = { version = "0.47.3", features = ["ignore-invalid-language-ids"] }
|
||||
|
|
|
@ -88,7 +88,6 @@ servo_geometry = { path = "../geometry" }
|
|||
servo_url = { path = "../url" }
|
||||
style = { workspace = true }
|
||||
style_traits = { workspace = true }
|
||||
surfman = { workspace = true }
|
||||
tracing = { workspace = true, optional = true }
|
||||
webdriver_server = { path = "../webdriver_server", optional = true }
|
||||
webgpu = { path = "../webgpu" }
|
||||
|
@ -98,5 +97,11 @@ webrender_traits = { workspace = true }
|
|||
webxr = { workspace = true, optional = true }
|
||||
webxr-api = { workspace = true, optional = true }
|
||||
|
||||
[target.'cfg(any(target_os = "android", target_env = "ohos"))'.dependencies]
|
||||
surfman = { workspace = true, features = ["sm-angle-default"] }
|
||||
|
||||
[target.'cfg(not(any(target_os = "android", target_env = "ohos")))'.dependencies]
|
||||
surfman = { workspace = true, features = ["sm-x11", "sm-raw-window-handle-06"] }
|
||||
|
||||
[target.'cfg(all(not(target_os = "windows"), not(target_os = "ios"), not(target_os = "android"), not(target_env = "ohos"), not(target_arch = "arm"), not(target_arch = "aarch64")))'.dependencies]
|
||||
gaol = "0.2.1"
|
||||
|
|
|
@ -57,6 +57,7 @@ class JobConfig(object):
|
|||
wpt_layout: Layout = Layout.none
|
||||
profile: str = "release"
|
||||
unit_tests: bool = False
|
||||
build_libservo: bool = False
|
||||
bencher: bool = False
|
||||
wpt_args: str = ""
|
||||
# These are the fields that must match in between two JobConfigs for them to be able to be
|
||||
|
@ -72,6 +73,7 @@ class JobConfig(object):
|
|||
|
||||
self.wpt_layout |= other.wpt_layout
|
||||
self.unit_tests |= other.unit_tests
|
||||
self.build_libservo |= other.build_libservo
|
||||
self.bencher |= other.bencher
|
||||
self.update_name()
|
||||
return True
|
||||
|
@ -92,6 +94,8 @@ class JobConfig(object):
|
|||
modifier.append(self.profile.title())
|
||||
if self.unit_tests:
|
||||
modifier.append("Unit Tests")
|
||||
if self.build_libservo:
|
||||
modifier.append("Build libservo")
|
||||
if self.wpt_layout != Layout.none:
|
||||
modifier.append("WPT")
|
||||
if self.bencher:
|
||||
|
@ -131,6 +135,8 @@ def handle_modifier(config: JobConfig, s: str) -> Optional[JobConfig]:
|
|||
s = s.lower()
|
||||
if "unit-tests" in s:
|
||||
config.unit_tests = True
|
||||
if "build-libservo" in s:
|
||||
config.build_libservo = True
|
||||
if "production" in s:
|
||||
config.profile = "production"
|
||||
if "bencher" in s:
|
||||
|
@ -175,8 +181,11 @@ class Config(object):
|
|||
self.fail_fast = True
|
||||
continue # skip over keyword
|
||||
if word == "full":
|
||||
words.extend(["linux-unit-tests", "linux-wpt-2020", "linux-bencher"])
|
||||
words.extend(["macos-unit-tests", "windows-unit-tests", "android", "ohos", "lint"])
|
||||
words.extend(["linux-unit-tests", "linux-build-libservo", "linux-wpt-2020", "linux-bencher"])
|
||||
words.extend([
|
||||
"macos-unit-tests", "macos-build-libservo", "windows-unit-tests", "windows-build-libservo",
|
||||
"android", "ohos", "lint",
|
||||
])
|
||||
continue # skip over keyword
|
||||
if word == "bencher":
|
||||
words.extend(["linux-bencher", "macos-bencher", "windows-bencher", "android-bencher", "ohos-bencher"])
|
||||
|
@ -220,6 +229,7 @@ class TestParser(unittest.TestCase):
|
|||
'name': 'Linux (Unit Tests)',
|
||||
'profile': 'release',
|
||||
'unit_tests': True,
|
||||
'build_libservo': False,
|
||||
'workflow': 'linux',
|
||||
'wpt_layout': 'none',
|
||||
'wpt_args': ''
|
||||
|
@ -230,29 +240,32 @@ class TestParser(unittest.TestCase):
|
|||
self.assertDictEqual(json.loads(Config("").to_json()),
|
||||
{"fail_fast": False, "matrix": [
|
||||
{
|
||||
"name": "Linux (Unit Tests, WPT, Bencher)",
|
||||
"name": "Linux (Unit Tests, Build libservo, WPT, Bencher)",
|
||||
"workflow": "linux",
|
||||
"wpt_layout": "2020",
|
||||
"profile": "release",
|
||||
"unit_tests": True,
|
||||
'build_libservo': True,
|
||||
'bencher': True,
|
||||
"wpt_args": ""
|
||||
},
|
||||
{
|
||||
"name": "MacOS (Unit Tests)",
|
||||
"name": "MacOS (Unit Tests, Build libservo)",
|
||||
"workflow": "macos",
|
||||
"wpt_layout": "none",
|
||||
"profile": "release",
|
||||
"unit_tests": True,
|
||||
'build_libservo': True,
|
||||
'bencher': False,
|
||||
"wpt_args": ""
|
||||
},
|
||||
{
|
||||
"name": "Windows (Unit Tests)",
|
||||
"name": "Windows (Unit Tests, Build libservo)",
|
||||
"workflow": "windows",
|
||||
"wpt_layout": "none",
|
||||
"profile": "release",
|
||||
"unit_tests": True,
|
||||
'build_libservo': True,
|
||||
'bencher': False,
|
||||
"wpt_args": ""
|
||||
},
|
||||
|
@ -262,6 +275,7 @@ class TestParser(unittest.TestCase):
|
|||
"wpt_layout": "none",
|
||||
"profile": "release",
|
||||
"unit_tests": False,
|
||||
'build_libservo': False,
|
||||
'bencher': False,
|
||||
"wpt_args": ""
|
||||
},
|
||||
|
@ -271,6 +285,7 @@ class TestParser(unittest.TestCase):
|
|||
"wpt_layout": "none",
|
||||
"profile": "release",
|
||||
"unit_tests": False,
|
||||
'build_libservo': False,
|
||||
'bencher': False,
|
||||
"wpt_args": ""
|
||||
},
|
||||
|
@ -280,6 +295,7 @@ class TestParser(unittest.TestCase):
|
|||
"wpt_layout": "none",
|
||||
"profile": "release",
|
||||
"unit_tests": False,
|
||||
'build_libservo': False,
|
||||
'bencher': False,
|
||||
"wpt_args": ""}
|
||||
]})
|
||||
|
@ -292,6 +308,7 @@ class TestParser(unittest.TestCase):
|
|||
'name': 'Linux (WPT)',
|
||||
'profile': 'release',
|
||||
'unit_tests': False,
|
||||
'build_libservo': False,
|
||||
'workflow': 'linux',
|
||||
'wpt_layout': 'all',
|
||||
'wpt_args': ''
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue