ruby / ruby/ruby.wasm

Better build orchestration

Ouverte
#483 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Ruby
Étoiles
875
Forks
68
Merge moyen
9 j 5 h
PR mergées (30 j)
1

Description

The underlying build system of rbwasm build is quite messy.

  1. Each build step has to have its ad-hoc up-to-date check like followings:
    https://github.com/ruby/ruby.wasm/blob/a5d06a01873130fda0f07f4401a3b018c6f1d753/lib/ruby_wasm/build/product/baseruby.rb#L26 https://github.com/ruby/ruby.wasm/blob/a5d06a01873130fda0f07f4401a3b018c6f1d753/lib/ruby_wasm/build/product/crossruby.rb#L171
  2. Uses of build product and cache key computation are placed far, so we often forget to update the cache key and get a wrong cache restored.
    https://github.com/ruby/ruby.wasm/blob/a5d06a01873130fda0f07f4401a3b018c6f1d753/lib/ruby_wasm/build.rb#L78
  3. The current cache mechanism cannot restore two or more artifacts produced within a single rake task job. This usually happens for PIC & non-PIC builds invoked by rake npm:ruby-head-wasm-wasi:build
  4. Our cache mechanism does not allow partial cache-hit, so even if we change only crossruby source revision, we have to rebuild openssl from scratch.
  5. Our cache mechanism is not sensitive to recipe changes. For instance, even if we change CFLAGS value, crossruby product will not be rebuilt.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par lire lib/ruby_wasm/build.rb ainsi que les implémentations des produits dans lib/ruby_wasm/build/product/baseruby.rb et crossruby.rb. Suivez le point d’entrée rake npm:ruby-head-wasm-wasi:build et ses artefacts PIC et non-PIC. Le travail est terminé lorsque le cache de build gère plusieurs artefacts et les correspondances partielles, ainsi que les changements apportés aux révisions du code source et aux recettes, sans restaurer de résultats incorrects.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
ruby, wasm
Domaine
build-system
Type d'issue
Refactorisation
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.