2012-07-23 21 views
6

मेरे पास एक साइगपोर्ट पैकेज से स्रोत कोड की संरचना के बारे में एक प्रश्न है।एक साइगपोर्ट से स्रोत कैसे बनाएं?

यहाँ एक Cygports स्रोत फ़ाइल की सामग्री है:

  • परियोजना (tar.gz, tar.bz2, आदि)
  • * .patch फ़ाइलों के किसी भी संख्या के लिए वास्तविक स्रोत बंडल ।
  • एक .cygport फ़ाइल

मैं cygports रिपोजिटरी से एडिट-3.4.2 का निर्माण करने की कोशिश कर रहा हूँ।

.cygport फ़ाइल ./configure में उचित विकल्प चलाने में मेरी सहायता कैसे करती है?

उदाहरण के लिए, जीएडिट में अगर मैं निर्दिष्ट नहीं करता - डिस्प्ले-स्पेल यह त्रुटि के कारण आगे नहीं बढ़ेगा। मैं ./configure विकल्पों की सूची कैसे प्राप्त करूं जिनका उपयोग प्रोजेक्ट बनाने के लिए किया गया था जब साइगपोर्ट बनाया गया था?

क्या कोई तरीका है कि हम साइगपोर्ट बनाने के लिए साइगपोर्ट निष्पादन योग्य का उपयोग कर सकते हैं और उपसर्ग भी बदल सकते हैं?

यहाँ gedit-3.4.2-1.cygport की सामग्री है:

inherit python gnome2 

DESCRIPTION="GNOME text editor" 

PATCH_URI="3.4.2-cygwin.patch" 

DEPEND="gnome-common gtk-doc 
    girepository(Gtk-3.0) 
    pkgconfig(enchant) 
    pkgconfig(gtksourceview-3.0) 
    pkgconfig(libpeas-gtk-1.0)" 

PKG_NAMES="${PN} ${PN}-devel" 
PKG_HINTS="setup devel" 
gedit_CONTENTS="--exclude=gtk-doc --exclude=libgedit* etc/ usr/bin/ usr/lib/gedit/ ${PYTHON_SITELIB#/} usr/share/" 
gedit_devel_CONTENTS="usr/include/ usr/lib/gedit/libgedit* usr/lib/pkgconfig/ usr/share/gtk-doc/" 

DIFF_EXCLUDES="*.desktop.in *.schemas.in *-marshal.h" 

CYGCONF_ARGS="--libexecdir=/usr/lib --enable-python" 

KEEP_LA_FILES="none" 

संपादित मेलिंग सूची Cygwin बंदरगाहों से किसी ने कहा:

"कॉन्फ़िगर विकल्पों

--libexecdir=/usr/lib --enable-python 

कौन सा CYGCONF_ARGS से है। "

उत्तर

16

यहाँ एक Cygports स्रोत फ़ाइल की सामग्री है:

आप एक Cygwin पैकेज स्रोत फ़ाइल के रूप में यह सोचने के लिए बेहतर कर चाहते हैं।

cygport सिगविन बाइनरी और स्रोत पैकेज के निर्माण को स्वचालित करने के लिए बस एक उपकरण है। यह प्राथमिक उपकरण उपलब्ध है, लेकिन कुछ अन्य पैकेजिंग सिस्टम के विपरीत, वास्तव में इसका उपयोग करने के लिए आपको मजबूर करने के लिए कुछ भी नहीं है। साइगविन पैकेज को पूरी तरह से हाथ से बनाना संभव है, क्योंकि यह वास्तव में एक टैरबॉल से अधिक कुछ नहीं है कि सिगविन के setup.exe सिग्विन रूट निर्देशिका (आमतौर पर c:\cygwin) में अंधाधुंध रूप से अनपैक कर सकते हैं, उम्मीद है कि यह पैकेज की फ़ाइलों को समझदार स्थानों में रखेगा ।

cygport से पहले, लोगों ने अपना खुद का विज्ञापन पैकेजिंग सिस्टम बनाया था। कई सिग्विन पैकेज रखरखाव अभी भी इन उपकरणों का उपयोग करते हैं। (आपका सचमुच शामिल है; मेरे तीन पैकेजों में से दो cygport का उपयोग करते हैं, लेकिन तीसरा अभी भी एक कस्टम बिल्ड सिस्टम का उपयोग करता है।)

आखिरकार, आपमें cygport मैन्युअल पढ़ना चाहते हैं।

(हाँ, मुझे पता है, "आरटीएफएम" उत्तर यहां पर फंसे हुए हैं।लेकिन, एक है जो वर्तमान में सरकारी Cygwin पैकेज भंडार में दो cygport आधारित संकुल का कहना है के रूप में, कृपया मुझे विश्वास है कि जब मैं आपको बता दूँ कि मैनुअल अभी भी एक बेहतरीन संसाधन इस विषय पर उपलब्ध है।)

कैसे करता है। cygport फ़ाइल मुझे ./configure में उचित विकल्प चलाने में मदद करती है?

आप अन्य संसाधनों के माध्यम से पता चला के रूप में, आप पहली बार .cygport फ़ाइल में CYGCONF_ARGS मूल्य संपादित करने की आवश्यकता होगी।

उसके बाद सबसे आसान संभव कदम cygport gedit-3.4.2-1.cygport all है। वह सभी बाइनरी पैकेजों को एक ही चरण में पुनर्निर्माण करने का प्रयास करता है। यह एक नया स्रोत पैकेज भी बनाता है जिसमें अद्यतन .cygport और पैच फ़ाइलें शामिल हैं।

यदि all निर्माण प्रक्रिया में कुछ तोड़ता है, तो आमतौर पर प्रक्रिया को पुनरारंभ करने के बजाय all द्वारा निहित उप-आदेशों का उपयोग करने के लिए स्विच करना अधिक तेज़ होता है। all चरण केवल prep, compile, install, package, और finish आपके लिए, उस क्रम में चलता है। उदाहरण के लिए, यदि all संकलन चरण के दौरान विफल रहता है, तो prep चरण को दोहराने की कोई आवश्यकता नहीं है।

(यह निर्माण पेड़ बर्बाद करने के लिए, फिर से रन prep के लिए मजबूर cygport या एक समझदार निर्माण प्रणाली के लिए असाधारण असामान्य है। सुदूर अधिक सामान्यतः, आप करने की जरूरत के अंत से पूर्ववत कर prep जब आप मैन्युअल मलबे पहली बार निर्माण करने के लिए एक नया पैकेज प्राप्त करने की कोशिश करते समय पेड़ बनाएं और शुरू करने की आवश्यकता है।)

उदाहरण के लिए, जीएडिट में अगर मैं निर्दिष्ट नहीं करता - डिस्प्ले-स्पेल यह आगे नहीं बढ़ेगा त्रुटि के लिए

आप शायद ठीक कर सकते हैं कि setup.exe के साथ आधिकारिक Cygwin पैकेज रिपोजिटरी से libaspell-devel पैकेज की स्थापना के द्वारा।

व्यक्तिगत रूप से, मैं किसी भी सुविधा को अक्षम नहीं करता जब तक कि यह Cygwin Ports प्रोजेक्ट से अनौपचारिक पैकेज स्थापित करने का मतलब नहीं था। [*] सिग्विन पोर्ट्स रिपोजिटरी होना अच्छा लगता है, लेकिन क्योंकि इसमें बहुत से पैकेज हैं, एक इंस्टॉल करना "दुनिया को स्थापित करें" स्थिति बना सकते हैं: पैकेज ए संकुल बी, सी और डी पर निर्भर करता है, और सी ई, एफ, जी, एच, और जी पर निर्भर करता है I, J, K, और ... निर्भरता पर निर्भर करता है साइगविन पैकेज रेपो के भीतर पदानुक्रम साइग्सपोर्ट रेपो में उन लोगों की तुलना में चापलूसी और संकुचित होते हैं।

क्या कोई तरीका है कि हम साइगपोर्ट बनाने के लिए साइगपोर्ट निष्पादन योग्य का उपयोग कर सकते हैं और उपसर्ग भी बदल सकते हैं?

आप अनुमान लगाया है कि आप बस CYGCONF_ARGS को --prefix=/my/private/program/tree जोड़ने के लिए, मुझे विश्वास।


[*] के बारे में आप "Cygwin बंदरगाहों" और cygport उलझन महसूस कर रहे हैं, नामकरण समानता कोई संयोग नहीं है। cygport साइकोविन पोर्ट्स पैकेज रिपोजिटरी बनाते समय याकोव सेल्कोविट्ज़ द्वारा बनाई गई एक उपकरण है। बाद में, यह अन्य सिग्विन पैकेज रखरखावकर्ताओं के बीच काफी लोकप्रिय हो गया, जिसने इसे प्रतिस्पर्धी निर्माण प्रणालियों में से अधिकांश को धक्का दिया।

+1

वास्तव में बहुत अच्छा जवाब।इसे पहले से 5 बार इस्तेमाल किया जाता है। –

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

  • कोई संबंधित समस्या नहीं^_^