macvim-dev / macvim-dev/macvim

Epic: Support reproducible builds

Đang mở
#1,506 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Epic Infrastructure
Ngôn ngữ chính
Vim Script
Star
7.9k
Fork
691
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

We currently distribute binary releases that people can use to download and install MacVim. We should add reproducible builds so that the binary we release is deterministic and reproducible and can be easily built on a local machine by any third party in an identical fashion.

Some motivations include the fact that supply chain attacks are real and while MacVim is unlikely a high-value target, it's still useful to reduce the likelihood of such problem happening to begin with. Also, with the deprecation of the macos-12 GitHub Action runner we will need to find another way to build the legacy MacVim binaries (either via a custom VM, or another CI service like Circle CI), and it would be nice to have some standard way to compare the generated artifacts and to have trust in the process working.

Note that we distribute signed apps, which is signed by a private key that only the maintainer controls, so it's impossible to have an artifact (MacVim.app) that can be compared bit-by-bit to a local build. We will need to provide a script that could strip the app signature before comparing.

  • Use relative paths for debug symbols and reproducible linker flags when building Vim
  • Use SOURCE_DATE_EPOCH to make builds not dependent on date/time.
  • Add documentation, and refactor build scripts (also necessary when adding another CI system) to make it more easily to build locally with the same flags.
  • Add CI output artifacts that contain necessary environment info.
  • #1586
  • Add user script that could compare two apps by stripping the signature, resign with adhoc signature, and then compare the result binaries. We also need to compare the entitlements.
  • CI test to validate reproducible builds.
  • Test in older versions of Xcode to make sure didn't break anything.

Related:

  • Add support for exporting dSYM files as part of build steps. These contain debug symbols and help diagnose crash issues for users. Make sure to use relative paths as it's necessary for reproducibility. This is a bit annoying to do due to a clang issue llvm/llvm-project#113973.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Issue không nêu tệp hoặc bài kiểm thử cụ thể nào; hãy bắt đầu bằng việc xem xét các build script hiện có và binary-release CI workflow. Công việc được xem là hoàn tất khi các bản build cục bộ và CI sử dụng flags và dữ liệu môi trường nhất quán, có thể so sánh các app chưa ký hoặc được ký ad-hoc, và CI xác thực khả năng tái lập trên các môi trường build được hỗ trợ.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
github-actions, macos, vim
Lĩnh vực
build-system, ci-cd, release
Loại issue
Tính năng
Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
20/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.