2015-02-04 6 views
10

happy के लिए स्रोत पेड़ AttrGrammarParser.ly और Parser.ly और alex के स्रोत पेड़ में Scan.x शामिल है। फिर भी, जहाँ तक मैं आदेश happy संकलन करने में बता सकते हैं, हम प्रयोग कर ... happy.lhs फाइलों में .ly फ़ाइलों को बदलने के लिए, और आदेश alex हम .hs का उपयोग कर फाइलों में .x फ़ाइलों को बदलने की जरूरत है संकलन करने में जरूरत है ... ।हैप्पी और एलेक्स बूटस्ट्रैप को स्वयं कैसे बनाते हैं?

तो ऐसा लगता है कि उपकरण को संकलित करने के लिए यहां कुछ बूटस्ट्रैपिंग चल रही है।

Setup.lhs प्रत्येक प्रोजेक्ट के लिए फ़ाइलों में कुछ टेम्पलेट विस्तार होता है, लेकिन जहां तक ​​मैं कह सकता हूं, बूटस्ट्रैपिंग करने के लिए विशेष रूप से कुछ भी नहीं करें।

बूटस्ट्रैपिंग कैसे और कहाँ किया जाता है?

उत्तर

10

मुझे लगता है कि आप darcs.haskell.org पर इन पैकेजों के लिए डार्क्स रिपॉजिटरीज़ के स्रोत पेड़ को देख रहे हैं। आप Hackage पर वास्तविक tarballs को देखें, तो आप कुछ अलग दिखाई देंगे:

https://hackage.haskell.org/package/alex-3.1.4/src/dist/build/alex/alex-tmp/

https://hackage.haskell.org/package/happy-1.19.5/src/dist/build/happy/happy-tmp/

तो मूल रूप से निर्माण आवश्यक Hackage टारबॉल के साथ भेज दिया जाता है कलाकृतियों। तब Cabal बिल्ड प्रक्रिया के दौरान बिल्ड कलाकृतियों का उपयोग करता है, इस प्रकार स्थानीय रूप से बूटस्ट्रैप की आवश्यकता से परहेज करता है। Cabal यह भी जानता है कि इस तरह के निर्माण कलाकृतियों को कैसे संरक्षित किया जाए जब आप अपने पैकेज के लिए cabal sdist चलाते हैं, जिसे आप खुश या एलेक्स पर निर्भर नहीं करना चाहते हैं, लेकिन आखिर में मैंने जांच की है कि यह sandboxes, fwiw के साथ अच्छी तरह से इंटरऑपरेट नहीं करता है।

वैसे, एलेक्स और खुश विकास GitHub के लिए ले जाया गया है:

https://github.com/simonmar/alex/

https://github.com/simonmar/happy/

+0

आह ठीक। किसी ने मुझे हैकेल प्लेटफॉर्म के लिए एक स्रोत बॉल दिया था, और जिस संस्करण को उन्होंने पकड़ लिया था, किसी कारण से, इसमें उत्पन्न स्रोत नहीं थे। मैं सोच रहा था कि यह मेरे सिस्टम पर क्यों नहीं बनाया गया था, और अब मुझे पता है। – rampion

संबंधित मुद्दे