µÚ4Õ ¡¡¸´Ô Porting

Ŀ¼
4.1 Õû¸öϵͳÊÇÈçºÎÔËתµÄ?
4.2 »ñȡԴ´úÂë
4.3 ÐÞ¸Ä port
4.4 ´ò²¹¶¡
4.5 ÅäÖÃ
4.6 ´¦ÀíÓû§ÊäÈë

¡¡¡¡ºÃÁË£¬ Ò²Ðí¹¤×÷ûÄÇô¼òµ¥£¬ port ÐèÒª×öЩÐ޸IJÅÄܹ»ÔÚ FreeBSD ÉÏÅÜÆðÀ´¡£ ÔÚÕâÒ»ÕÂÀ ÎÒÃǽ«»áÒ»²½²½¾ÙÀýÀ´½éÉÜÓ¦¸ÃÈçºÎÐÞ¸ÄÀ´Ê¹ÄúµÄ port ÄÜÔÚ FreeBSD ÉÏÃæÔËÐС£

4.1 Õû¸öϵͳÊÇÈçºÎÔËתµÄ?

¡¡¡¡Ê×ÏÈ£¬ ÕâһϵÁе͝×÷ÊÇÓÉÓû§ÔÚÄúµÄ port Ŀ¼ÀïÇÃÈë make ºó·¢ÉúµÄ¡£ ÄúÒ²Ðí»á·¢ÏÖÔÚÁíÍâµÄÒ»¸ö´°¿ÚÀïÔĶÁһϠbsd.port.mk ½«»áÓÐÖúÓÚÄúµÄÀí½â¡£

¡¡¡¡ÒªÊÇÄú²»ÊǷdz£Ã÷°× bsd.port.mk ÊÇ×öʲôµÄ»°£¬ Ò²²»ÓÃÌ«µ£ÐÄ£¬ ºÜ¶àÈ˶¼²»ÖªµÀµÄ... :->

  1. fetch »áÊ×Ïȱ»Ö´ÐС£ fetch ½«¼ì²éÔÚ±¾µØµÄ DISTDIR Ŀ¼ÀïÊÇ·ñ´æÔÚ tar °ü¡£ Èç¹û fetch ûÓÐÕÒµ½¾Í»á²éÕÒ Makefile Öж¨ÒåµÄ MASTER_SITES URL£¬ »¹ÓÐÎÒÃǵÄÖ÷ FTP Õ¾µã ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/£¬ ÔÚÄÇÀïÎÒÃDZ¸·ÝÁËËùÓб»ÈÏ¿ÉµÄ distfile¡£ ¼ÙÉèÄǸö MASTER_SITES Õ¾µãÊÇÖ±½ÓÁ¬ÔÚ Internet Éϵģ¬ ¾Í»áÊÔ×ÅÓà FETCH Ö¸¶¨µÄ³ÌÐòÈ¡»Ø distfile¡£ Èç¹û³É¹¦µÄ»°£¬ Îļþ»á±»±£´æÔÚDISTDIR ËùÖ¸¶¨µÄĿ¼ÒÔ±¸ÉÔºóʹÓá£

  2. ½ÓÏÂÀ´»áÖ´ÐÐ extract¡£ Ëü»áÔÚ DISTDIR ÖÐѰÕÒÄúµÄ tar °ü (ͨ³£ÊÇÓà gzip ѹËõµÄ tar °ü)£¬È»ºó½âѹËõµ½ÓÉ WRKDIR ËùÖ¸¶¨µÄÁÙʱĿ¼Àï (ĬÈÏΪworkĿ¼)¡£

  3. ÏÂÒ»²½ÊÇÖ´ÐÐ patch¡£ Ê×ÏÈÈκÎÔÚ PATCHFILES Öж¨ÒåµÄ²¹¶¡¶¼»á±»´òÉÏ¡£ È»ºó£¬ ÔÚÓÉ PATCHDIR Ö¸¶¨µÄĿ¼ (ĬÈÏΪ filesĿ¼) Öз¢ÏÖµÄpatch-*£¬ ËüÃǽ«»áÒÔÎļþÃûµÄ×Öĸ˳Ðò±»ÏȺó´òÉÏ¡£

  4. configure»á±»Ö´ÐС£ ÕâÒ»²½Öè¿ÉÄÜ»áÓÐÒÔϼ¸ÖÖÇéÐΡ£

    1. Èç¹û´æÔÚ scripts/configure£¬ ¾Í»áÖ´ÐÐËü

    2. Èç¹û¶¨ÒåÁË HAS_CONFIGURE »òÕß GNU_CONFIGURE£¬ ¾Í»áÖ´ÐÐ WRKSRC/configure¡£

    3. Èç¹û¶¨ÒåÁËUSE_IMAGE£¬ ¾Í»áÖ´ÐÐ XMKMF (ĬÈÏΪ: xmkmf -a)¡£

  5. build»á±»Ö´ÐС£ ÕâÒ»²½½«»á½øÈëportsµÄ¹¤×÷Ŀ¼ (WRKSRC) È»ºó½øÐбàÒë¡£Èç¹û¶¨ÒåÁËUSE_GMAKE£¬ ¾Í»áʹÓà GNU make£¬ ·´Ö®£¬ Ôò»áʹÓÃϵͳĬÈ쵀 make¡£

¡¡¡¡ÒÔÉ϶¼ÊÇϵͳĬÈϵIJ½Öè¡£ ÄúÒ²¿ÉÒÔ¶¨Òå pre-something »òÕß post-something£¬ »òÕß°ÑÒÔ´ËÃüÃûµÄ½Å±¾·Åµ½ scripts Ŀ¼£¬ ËüÃÇ»áÔÚĬÈϵ͝×÷֮ǰ»òÖ®ºó±»Ö´ÐС£

¡¡¡¡¾Ù¸öÀý×Ó£¬ Èç¹ûÄúÔÚÄúµÄ Makefile ÀﶨÒåÁËpost-extract£¬ ²¢ÔÚ script Ŀ¼Àï·ÅÁËÒ»¸ö pre-build ½Å±¾£¬ ÄÇôÔÚ tar °ü½â¿ªÖ®ºó post-extract ½«±»µ÷Ó㬠pre-build ½Å±¾»áÔÚĬÈϵıàÒë֮ǰ±»Ö´ÐС£ ÎÒÃÇÍÆ¼öÄúÔÚ Makefile ¶¨ÒåËùÓе͝×÷£¬ Èç¹û²»ÊÇÊ®·Ö¸´Ôӵϰ£¬ ÕâÑù£¬ ±ðÈËÄܸüÈÝÒ×Ã÷°×ÄúµÄ port ÐèÒªÖ´ÐÐÄÄЩ·ÇĬÈϵ͝×÷¡£

¡¡¡¡Ä¬ÈϵÄÐÐΪ¶¼ÊÇÓÉ bsd.port.mk ¶¨ÒåµÄ do-something À´±íʾµÄ¡£ ÀýÈ磬 port ÖÐÓÃÀ´½âѹËõµÄÃüÁîÊÇÓÉ do-extract À´¶¨ÒåµÄ¡£ Èç¹ûÄú¶ÔĬÈϵÄÉèÖò»ÂúÒ⣬ ¿ÉÒÔͨ¹ýÔÚ Makefile ÖØÐ¶¨Òå do-someting À´×öЩ¸Ä±ä¡£

×¢Òâ: ¡°Ö÷¡± ¶¯×÷ (ÀýÈç extract¡¢ configure£¬ µÈµÈ) ½ö½öÊÇÓÃÀ´È·¶¨ËùÓÐÏàÓ¦µÄ½×¶Î¶¼Íê³ÉÁË£¬ ÒÔ¼°µ÷ÓÃÕæÊµµÄ¶¯×÷»ò½Å±¾£¬ ËüÃDz»Ó¦±»Ð޸ġ£ Èç¹ûÄúÏëÒªÐ޸ĽâѹËõÕâ¸ö¶¯×÷£¬ ¿ÉÒÔÐÞ¸Ä do-extract£¬ µ«ÓÀÔ¶¶¼²»Òª¸Ä±ä extract µÄ²Ù×÷£¡

¡¡¡¡ÎÒÃÇÒѾ­½éÉÜÁËÔÚÓû§ÇÃÈë make Ö®ºó»á·¢ÉúÄÄЩÊÂÇéÁË¡£ ½ÓÏÂÀ´ÎÒÃǽ«½øÐнøÒ»²½µÄѧϰ£¬ À´¿´Ò»¿´ÈçºÎ´´½¨Ò»¸öÀíÏëµÄ port¡£

ÈôÄúÓйØÓÚ FreeBSD ports ϵͳµÄÎÊÌ⣬ Çë·¢Ë͵ç×ÓÓʼþÖÁ <ports@FreeBSD.org>¡£
¹ØÓÚ´ËÎĵµµÄÈκÎÎÊÌ⣬ ÇëÖº¯ <doc@FreeBSD.org>¡£