$30 off During Our Annual Pro Sale. View Details »

Swift Package Mangerのバグを直した話

k-kohey
September 26, 2023

Swift Package Mangerのバグを直した話

k-kohey

September 26, 2023
Tweet

More Decks by k-kohey

Other Decks in Technology

Transcript

  1. 4XJGU1BDLBHF.BOHFS
    ͷόάΛ௚ͨ͠࿩
    ू·Ε4XJGU޷͖ʂ4XJGUѪ޷ձWPM!%F/"
    גࣜձࣾϦΫϧʔτ LLPIFZ

    View Slide

  2. ಥવͰ͕͢
    4XJGU1BDLBHF.BOBHFS࢖ͬͯ·͔͢ʁ🙋🙋

    View Slide

  3. ͜ͷ-5Ͱ࿩͢ࣄʛഎܠ
    • 4XJGU1BDLBHF.BOBHFSΛ࢖ͬͯ$ݴޠͷ5BSHFUΛ࡞Δ͜ͱ͕Ͱ͖Δ
    • 5BSHFUʹ͸ιʔεϑΝΠϧ͚ͩͰͳ͘ϔομʔϑΝΠϧ΋ؚΉ͜ͱ͕Ͱ͖Δ
    • $ݴޠͷ5BSHFU͸ιʔεϑΝΠϧ͕̍ͭҎ্ؚ·Εͳ͍ͱ࡞Εͳ͍
    όά͕͋ͬͨʢ˞ʣ
    • ιʔεϑΝΠϧؚ͕·Εͳ͍ͱΤϥʔΛग़ྗ͢Δ
    • ݪཧతʹ͸ϔομʔϑΝΠϧͷΈͰ΋Α͍͸ͣ
    ʢ˞ʣhttps://github.com/apple/swift-package-manager/issues/4806

    View Slide

  4. ͜ͷ-5Ͱ࿩͢ࣄʛഎܠ
    ͦͷͨΊϔομʔϑΝΠϧ͔͠ඞཁͳ͍5BSHFUͰ͸ۭͷ࣮૷Λ
    ιʔεϑΝΠϧͱͯ͠௥Ճ͢ΔϫʔΫΞϥ΢ϯυ͕஀ੜ
    https://github.com/apple/swift-numerics/blob/main/Sources/_NumericsShims/_NumericsShims.c
    (意訳)
    - このファイルは NumericShims モジュールを
    ビルドするためだけに存在する
    - このファイルがないと swiftpm は何もビルド
    しない

    View Slide

  5. ͜ͷ-5Ͱ࿩͢ࣄʛഎܠ
    ௚ͨ͠🎉

    View Slide

  6. 4XJGU1BDLBHF.BOBHFSίϯτϦϏϡʔτॳ৺ऀ
    ͕ίϯτϦϏϡʔτͨ͠ମݧΛجʹ
    ಉ͘͡ॳ৺ऀ͕ίϯτϦϏϡʔτ͢Δࡍͷॿ͚ʹͳΔΑ͏ʹ
    ஌ݟΛڞ༗ɾൃද͍ͨ͠ͱࢥ͍·͢ʂ

    View Slide

  7. ͜ͷ-5Ͱ࿩͢ࣄʛΞδΣϯμ
    ҎԼͷ߲໨ʹԊͬͯ࿩͠·͢
    • ։ൃ͢Δલ४උ
    • मਖ਼͢Δ
    • 13Λ࡞Δ
    • ײ૝

    View Slide

  8. ։ൃ͢Δલ४උʛJTTVFΛݟ͚ͭΔ
    • JTTVF͸ͨ͘͞Μ͋Δ
    • ݅ͷJTTVF͕PQFO͞Ε͍ͯΔʢ࣌఺ʣ
    • HPPEpSTUJTTVFϥϕϧͰϑΟϧλ͢Δͱ௿೉౓ͷJTTVFΛݟ͚ͭ΍͍͢
    https://github.com/apple/swift-package-
    manager/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22

    View Slide

  9. ։ൃ͢Δલ४උʛJTTVFΛબ୒͢Δ
    JTTVFΛબ୒͢Δ্ͰҎԼͷ֬ೝΛ͢Δͱྑͦ͞͏ͩͬͨ
    • طʹ'JYࡁΈͷJTTVFͰͳ͍͔
    • JTTVF͕PQFOͰ΋ɺ࣮͸ॏෳ͢Δ಺༰ͷJTTVF͕ଘࡏ͠ɺͦͷJTTVF͕طʹमਖ਼͞Ε͍ͯΔͱ͍͏
    έʔε͕͋Δ
    • Ί΅͍͠ΩʔϫʔυͰݕࡧ͠ɺࣅͨΑ͏ͳJTTVF͕ͳ͍͔֬ೝ͢Δͱྑ͍
    • طʹJTTVFʹணख͍ͯ͠Δਓ͕͍ͳ͍͔
    • ΞαΠϯ͕ܾ·ͬͯΔΑ͏ʹݟ͑ͯ΋ɺ௕͍ؒQFOEJOHʹͳ͍ͬͯΔ΋ͷ΋͋Δ఺ʹ஫ҙ
    • मਖ਼ํ਑ʹؔͯ͠
    • ϝϯςφʔͷํ͕໰୊Օॴ΍मਖ਼ํ਑ʹؔͯ͠ΞυόΠε͍ͯ͠ΔJTTVFΛࢄݟͨͨ͠Ίɺฉ͍ͨΒ
    ڭ͑ͯ͘Εͦ͏ͳงғؾ͕͋ͬͨ

    View Slide

  10. ։ൃ͢Δલ४උ ʛ؀ڥߏங
    ؀ڥߏங͸9DPEF͕࢖͑Δ؀ڥͩͱ؆୯ʹߦ͑Δʢ˞ʣ
    9DPEFΛΠϯετʔϧ
    IUUQTHJUIVCDPNBQQMFTXJGUQBDLBHFNBOBHFSΛ
    DMPOF͢Δ
    ϧʔτσΟϨΫτϦʹଘࡏ͢Δ1BDLBHFTXJGUΛ։͘
    ೚ҙͷ4DIFNFΛબ୒͠Ϗϧυ͢Δ
    ςετΛ࣮ߦ͢Δ৔߹͸4XJGU1.1BDLBHFΛબ୒
    ʢ˞ʣhttps://github.com/apple/swift-package-manager/blob/main/CONTRIBUTING.md#using-xcode-easiest

    View Slide

  11. मਖ਼͢ΔʛΞ΢τϥΠϯ
    ࣗ਎ͷमਖ਼ΛྫʹͱΔͱҎԼͷΑ͏ͳաఔͰमਖ਼Λߦͬͨ
    ग़ྗ͔Β໰୊ՕॴΛಛఆ
    ໰୊ՕॴʹςετίʔυΛ௥Ճ
    ςετ͕௨ΔΑ͏ʹίʔυΛमਖ਼

    View Slide

  12. मਖ਼͢Δʛग़ྗ͔Β໰୊ՕॴΛಛఆ
    मਖ਼ͷର৅ͱͳΔ)FBEFSϑΝΠϧͷΈΛؚΜͩ5BSHFUΛ࡞Ζ͏
    ͱ͢ΔͱɺҎԼͷΑ͏ͳग़ྗ͕ಘΒΕΔࣄ͕Θ͔͍ͬͯͨ
    • [warning]: Source files for target Bar should be located under
    'Sources/Bar', or a custom sources path can be set with the
    'path' property in Package.swift
    • [error]: target 'Bar' referenced in product 'Bar' is empty

    View Slide

  13. मਖ਼͢Δʛग़ྗ͔Β໰୊ՕॴΛಛఆ
    ग़ྗΛجʹϓϩδΣΫτ಺ͰݕࡧΛ͔͚ΔͱɺΤϥʔΛग़ྗ͍ͯ͠ΔՕॴɺ
    ͭ·Γ໰୊ՕॴΛ೺Ѳ͢Δ͜ͱ͕Ͱ͖ͨ

    View Slide

  14. ᶃΤϥʔ࣌ͷग़ྗΛߦ͏
    ؔ਺͕൑໌
    ᶄ্هͷؔ਺͸UBSHFU͕OJMͷͱ͖ʹ
    ݺ͹ΕΔ͜ͱ͕൑໌
    ᶅUBSHFUΛ࡞ΔࡍʹOJMΛฦ͍ͯ͠Δ
    Օॴ͕൑໌

    View Slide

  15. मਖ਼͢Δʛ໰୊ՕॴʹςετίʔυΛ௥Ճ
    • ໰୊Օॴ͕൑໌ͨ͠ͷͰɺςετίʔυΛ௥Ճͯ͠σόοά͢Δ४උΛߦ
    ͳͬͨ
    • 4XJGU1BDLBHF.BOBHFSΛϏϧυͯ͠ɺੜ੒͞Εͨ$-*πʔϧΛ࢖ͬͯσ
    όοά͢Δํ๏΋͋Δ͕໘౗ͳͷͰۃྗආ͚ͨ
    • 13࡞Δલʹ࠷ऴ֬ೝͱͯ͜͠ͷํ๏Λ࢖ͬͯσόοάͨ͠
    • 4XJGU1BDLBHF.BOBHFSΛTXJGUCVJME͢ΔͱCVJMEʹTXJGUQBDLBHF΍TXJGUCVJMEίϚϯυ͕ੜ੒͞ΕΔ(※)
    (※)https://github.com/apple/swift-package-manager/blob/main/CONTRIBUTING.md#local-development

    View Slide

  16. मਖ਼͢Δʛ໰୊ՕॴʹςετίʔυΛ௥Ճ
    • ଞͷςετέʔεΛਅࣅͯ͠
    όά͕ൃੜ͢Δঢ়گΛ࠶ݱͨ͠
    ςετέʔεΛ௥Ճ
    • ΋ͪΖΜςετέʔε͸ࣦഊ͢
    Δ͕ɺҙਤ͍ͯͨ͠Τϥʔग़ྗ
    ΛಘΒΕͯ҆৺ͨ͠
    • ͋ͱ͸ɺ͜ͷςετέʔε͕੒ޭ
    ͢ΔΑ͏ʹमਖ਼͢Ε͹͍͍

    View Slide

  17. मਖ਼͢Δʛςετ͕௨ΔΑ͏ʹίʔυΛमਖ਼
    • 5BSHFUΛ࡞੒͢Δࡍʹ5BSHFUΛOJMʹ͢Δ͔൑அ͍ͯ͠Δ͕ɺ
    ͦͷ൑அʹϔομʔͷ༗ແ͕ߟྀ͞Εͯͳ͔ͬͨ
    • TPVSDFT΍SFTPVDFT͕ۭͰ΋ϔομʔ͕͋Ε͹UBSHFU͕OJMʹͳΒͳ͍Α
    ͏ʹͨ͠

    View Slide

  18. मਖ਼͢Δʛςετ͕௨ΔΑ͏ʹίʔυΛमਖ਼
    • 5BSHFUΛ࡞੒͢Δࡍʹ5BSHFUΛOJMʹ͢Δ͔൑அ͍ͯ͠Δ͕ɺ
    ͦͷ൑அʹϔομʔͷ༗ແ͕ߟྀ͞Εͯͳ͔ͬͨ
    • TPVSDFT΍SFTPVDFT͕ۭͰ΋ϔομʔ͕͋Ε͹UBSHFU͕OJMʹͳΒͳ͍Α
    ͏ʹͨ͠
    ςετ੒ޭ🎉

    View Slide

  19. ͋ͱ͸13Λ࡞Δ͚ͩʂ

    View Slide

  20. 13Λ࡞ΔʛίϯτϦϏϡʔτΨΠυʹै͏
    https://github.com/apple/swift-package-manager/blob/main/CONTRIBUTING.md#creating-pull-
    requests

    View Slide

  21. 13Λ࡞ΔʛίϯτϦϏϡʔτΨΠυʹै͏
    https://github.com/apple/swift-package-manager/blob/main/CONTRIBUTING.md#creating-pull-
    requests
    apple/swift-format
    じゃないんだ😯

    View Slide

  22. 13Λ࡞ΔʛϨϏϡʔΛड͚Δ
    すんなりマージしてくれた

    View Slide

  23. ײ૝
    • ීஈར༻͍ͯ͠ΔπʔϧʹίϯτϦϏϡʔτ͢Δ͜ͱͰɺ
    ΤϯδχΞϞνϕ্͕͕ͬͨ
    • ࠓճͷमਖ਼͸؆୯ͳϑϥά੍ޚͷϛεΛਖ਼͢΋ͷ͕ͩͬͨɺͦͷΑ͏ͳ
    όά͕4XJGU1BDLBHF.BOBHFSʹ͋Δͷ͕ڻ͍ͨ
    • ௐࢠʹͷͬͯଞͷJTTVF΋௚͕ͨ͠ɺ13Λग़ͨ͋͠ͱʹطʹमਖ਼ࡁΈͷ
    JTTVFͩͬͨࣄ͕൑໌͠൵͘͠ͳͬͨ
    • ઌड़ͨ͠JTTVFͷ୳͠ํʹؔ͢Δ࿩͸ࣗ෼ͷࣦഊஊ͔ΒͰ͢😅

    View Slide

  24. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide