Integrate native Rime and stabilize input, output, and rendering
- Add optional modifier-only Super binding whose tap is cancelled by other input, focus changes, grabs, locks, and session teardown. - Ship the native ferese-rime user service, Rime defaults, installer inventory, package dependencies, session environment, and docs. - Vendor Smithay 8a27023 with the SHM texture-cache format fix and add GPU regressions for format changes and resize snapshots. - Release reused CRTC owners before staging output modes, then restore changed outputs before former owners when a transaction fails. - Wait for resize-capture GPU completion, expand filtered surface damage, and preserve IME popup origin under fractional scaling. - Mark weekends like holidays in both calendar layouts.
This commit is contained in:
1 parent
a2be421974
commit
993bc0f88f
391 files changed
+130908
-76
No files matched your search
+17
-5
@@ -35,16 +35,24 @@ def check_tag(tag, release_version):
|
||||
def licenses(destination, metadata):
|
||||
destination.mkdir(parents=True, exist_ok=True)
|
||||
report = []
|
||||
workspace_members = set(metadata.get('workspace_members', []))
|
||||
workspace_root = Path(metadata.get('workspace_root', ROOT))
|
||||
for package in sorted(metadata['packages'], key=lambda p: (p['name'], p['version'])):
|
||||
if package['source'] is None:
|
||||
if package.get('id') in workspace_members:
|
||||
continue
|
||||
|
||||
directory = Path(package['manifest_path']).parent
|
||||
source_hash = hashlib.sha256(package['source'].encode()).hexdigest()[:8]
|
||||
source = package['source']
|
||||
if source is None:
|
||||
# A vendored/path dependency is third-party code even though Cargo
|
||||
# gives it no registry/Git source. Keep notices reproducible across
|
||||
# checkout locations without exporting absolute manifest paths.
|
||||
source = 'path+' + Path(os.path.relpath(directory, workspace_root)).as_posix()
|
||||
source_hash = hashlib.sha256(source.encode()).hexdigest()[:8]
|
||||
name = f"{package['name']}-{package['version']}-{source_hash}"
|
||||
files = set()
|
||||
search = [directory]
|
||||
if package['source'].startswith('git+'):
|
||||
if source.startswith('git+'):
|
||||
for ancestor in directory.parents:
|
||||
search.append(ancestor)
|
||||
if (ancestor / '.git').exists():
|
||||
@@ -66,7 +74,7 @@ def licenses(destination, metadata):
|
||||
shutil.copyfile(path, target)
|
||||
|
||||
report.append({'name': package['name'], 'version': package['version'],
|
||||
'source': package['source'], 'license': package['license'],
|
||||
'source': source, 'license': package['license'],
|
||||
'notice_directory': name})
|
||||
|
||||
(destination / 'dependencies.json').write_text(json.dumps(report, indent=2) + '\n')
|
||||
@@ -113,7 +121,11 @@ def stage(destdir, binary_dir, pam):
|
||||
|
||||
planned.extend([(ROOT / f'packaging/pam.d/ferese-lock.{pam}', 'etc/pam.d/ferese-lock', 0o644),
|
||||
(ROOT / 'LICENSE', 'usr/share/licenses/ferese/LICENSE', 0o644),
|
||||
(ROOT / 'README.md', 'usr/share/doc/ferese/README.md', 0o644)])
|
||||
(ROOT / 'README.md', 'usr/share/doc/ferese/README.md', 0o644),
|
||||
(ROOT / 'vendor/smithay/UPSTREAM.md',
|
||||
'usr/share/doc/ferese/vendor/smithay/UPSTREAM.md', 0o644),
|
||||
(ROOT / 'vendor/smithay/patches/shm-texture-cache-format.patch',
|
||||
'usr/share/doc/ferese/vendor/smithay/shm-texture-cache-format.patch', 0o644)])
|
||||
# Validate the complete inventory before writing any part of the package.
|
||||
for source, _, _ in planned:
|
||||
if not source.is_file():
|
||||
|
||||
Reference in new issue
Block a user