¡¡¡¡ÔÚÄú×¼±¸ÖÆ×÷ port µÄ¹ý³ÌÖУ¬ Ôö¼Ó»òÐ޸ĵÄÎļþ£¬ ¶¼¿ÉÒÔͨ¹ý diff(1) À´×ö³É²¹¶¡¡£ Ï£ÍûÓ¦Óõ½Ô´´úÂëÉϵÄÿ¸ö²¹¶¡£¬ ¶¼Ó¦±£´æÎªµ¥¶ÀµÄÎļþ£¬ ²¢ÃüÃûΪ patch-*£¬ ÆäÖÐ * ±íʾ½«ÒªÐ޸ĵÄÎļþµÄÍêÕû·¾¶Ãû£¬ ÀýÈç patch-Imakefile »ò patch-src-config.h¡£ ÕâЩÎļþ£¬ ¶¼Ó¦±£´æÔÚ PATCHDIR (ͨ³£ÊÇ files/)£¬ ÕâÀïµÄ²¹¶¡¶¼»á×Ô¶¯Ó¦Óõ½Ô´´úÂëÉÏ¡£ ËùÓеIJ¹¶¡±ØÐëÊÇÏà¶ÔÓÚ WRKSRC µÄ (Ò»°ã¶øÑÔ£¬ ÄúµÄ port »á½«Æä tarball ½âѹËõÔÚÄÇÀ ²¢Íê³ÉÓàÏµĹ¤×÷)¡£ ΪÁËÈÃÐÞÕýºÍÉý¼¶¸üÈÝÒ×£¬ ÄúÓ¦±ÜÃâʹÓöà¸ö patch È¥ÐÞ¸Äͬһ¸öÎļþ (ÀýÈ磬 patch-file ÒÔ¼° patch-file2 ¶¼ÐÞ¸Ä WRKSRC/foobar.c) ÕâÖÖÇé¿ö¡£ ÐèҪעÒâµÄÊÇ£¬ Èç¹ûÐ޸ĵÄÎļþµÄ·¾¶Öаüº¬Ï»®Ïß (_) ×Ö·û£¬ ÔòÔÚ²¹¶¡ÎļþÃûÖÐӦʹÓÃÁ½¸öÏ»®ÏßÀ´´úÌæ¡£ ÀýÈ磬 Èç¹ûÐèÒªÐÞ¸ÄÃûΪ src/freeglut_joystick.c µÄÎļþ£¬ ²¹¶¡ÎļþµÄÃû×ÖӦΪ patch-src-freeglut__joystick.c¡£
¡¡¡¡Ö»ÓÐ [-+._a-zA-Z0-9] ÕâЩ×Ö·û£¬ ¿ÉÒÔ³öÏÖÔÚ²¹¶¡µÄÎļþÃûÖУ¬ ÇëÎñ±Ø²»ÒªÊ¹ÓóýÕâЩ×Ö·ûÒÔÍâµÄÆäËü×Ö·û¡£ ²»Òª°ÑÄúµÄ²¹¶¡ÃüÃû³É patch-aa »ò patch-ab µÈÕâÑùµÄÃû×Ö£¬ ×îºÃÄÜÔÚ²¹¶¡ÃûÖÐÌᵽ·¾¶ºÍÎļþÃû¡£
¡¡¡¡²»Òª°Ñ RCS ×Ö·û´®·Å½ø²¹¶¡¡£ ÎÒÃǰÑÎļþ·Å½ø ports Ê÷µÄʱºò£¬ CVS »áËð»µËüÃÇ£¬ µ±ÎÒÃÇÔÙ check out ³öÀ´µÄʱºò£¬ ËüÃǾͻáºÍÔÀ´µÄ²»Ò»Ñù£¬ ´Ó¶øµ¼Ö´ò²¹¶¡Ê§°Ü¡£ RCS ×Ö·û´® ÊÇÓÉÃÀÔª·ûºÅ ($) Î§ÈÆµÄ£¬ ͨ³£ÓÉ $Id »ò $RCS ¿ªÍ·¡£
¡¡¡¡Ê¹Óà diff(1)
µÄµÝ¹éÑ¡Ïî(-r
) ºÜºÃ£¬ µ«ÊÇÇë¼ì²éÒ»ÏÂ×îºóÊä³öµÄ patch£¬
È·±£Ã»ÓÐÈκεÄÀ¬»øÐÅÏ¢¡£ ÌØ±ðµØ£¬ ÓÐ 2 ÖÖÎļþ²»ÐèÒª diff£¬ ²¢ÇÒÓ¦¸Ãɾ³ý£º Ò»ÖÖÊÇ
Makefile£¬ µ±ÄúµÄportʹÓÃÁËImake£¬
»òÕß GNU configure µÈµÈµÄ»°¡£ Èç¹ûÄú²»µÃ²»±à¼configure.in ÒÔʹ autoconf È¥Éú³É configure£¬ ²»ÒªÊ¹Óà configure À´×ö diff
(Õâ³£³£»áÓкü¸Ç§Ðг¤!)£» Ç붨Òå USE_AUTOTOOLS=autoconf:261
²¢¶ÔÓ¦ configure.in À´ÖÆ×÷ diff¡£
¡¡¡¡ÁíÍ⣬ Äú»¹Ó¦¾¡Á¿¼õÉÙ²¹¶¡Öзǹ¦ÄÜÐԵĿոñ¼°¿Õ°×±ä¶¯¡£ ÔÚ¿ªÔ´ÊÀ½çÖУ¬ ×ñѲ»Í¬µÄ±àÂë¹æ·¶µÄÏîÄ¿¹²Ïí´óÁ¿´úÂëÊǺܳ£¼ûµÄÊÂÇé¡£ Èç¹ûÄú´Óij¸öÏîÄ¿ÖÐÌáȡһ²¿·Ö¹¦ÄÜÓÃÀ´ÐÞÕýÁíÒ»¸ö³ÌÐòÖеÄÎÊÌâʱ£¬ ÇëÎñ±ØÐ¡ÐÄ£º ²¹¶¡ÖкܿÉÄܵ½´¦¶¼ÊǷǹ¦ÄÜÐԵı䶯ÐС£ Õâ²»½ö»áµ¼Ö CVS ¿âµÄÅòÕÍ£¬ ¶øÇÒÒ²»áÈõ¼ÖÂÎÊÌâµÄ¹ÊÕϵ㣬 ÒÔ¼°Äúµ½µ×ÐÞ¸ÄÁËʲô±äµÃ²»ÉõÇåÎú¡£
¡¡¡¡¼ÙÈçÐèҪɾ³ýÎļþ£¬ ÔòÓ¦ÔÚ post-extract target£¬ ¶ø²»ÊÇ×÷Ϊ²¹¶¡µÄÒ»²¿·ÖÀ´Íê³É¡£
¡¡¡¡³ý´ËÖ®Í⣬ port µÄ Makefile »¹¿ÉÒÔͨ¹ý in-place ģʽµÄ sed(1) À´Ö±½Ó½øÐмòµ¥µÄÌæ»»²Ù×÷¡£ Èç¹û²¹¶¡ÐèҪʹÓñäÁ¿Öµ£¬ Õâ¾Í·Ç³£ÓÐÓÃÁË¡£ ÀýÈ磺
post-patch: @${REINPLACE_CMD} -e 's|for Linux|for FreeBSD|g' ${WRKSRC}/README @${REINPLACE_CMD} -e 's|-pthread|${PTHREAD_LIBS}|' ${WRKSRC}/configure
¡¡¡¡ÍùÍùÔÚÒÆÖ²Ä³Ð©Èí¼þµÄʱºò»áÓöµ½ÕâÑùÒ»ÖÖÇé¿ö£¬ ÌØ±ðÊÇÕâ¸öÈí¼þÊÇÔÚ Windows® ÉÏ¿ª·¢µÄʱºò£¬ ´ó¶àÊýµÄÔ´´úÂë¶¼ÐèÒª½øÐÐCR/LFµÄת»»¡£ ÕâºÜ¿ÉÄÜ»á¸øÒÔºó´ò²¹¶¡´øÀ´ÎÊÌ⣬ »¹¿ÉÄÜ´¥·¢±àÒ뾯¸æ£¬ ²¢¸ø½Å±¾µÄÖ´ÐдøÀ´Âé·³ (/bin/sh^M not found)£¬ µÈµÈ¡£ ҪѸËÙ½«ËùÓÐÎļþÖÐµÄ CR/LF ¸ÄΪֻÓà LF£¬ ¿ÉÒÔÔÚ port µÄ Makefile ÖмÓÈë USE_DOS2UNIX=yes¡£ ³ý´ËÖ®Í⣬ »¹¿ÉÒÔÖ¸¶¨Ò»¸öÐèÒªÖ´ÐÐÕâÖÖת»»²Ù×÷µÄÎļþÁÐ±í£º
USE_DOS2UNIX= util.c util.h
¡¡¡¡Èç¹ûÏ£Íûת»»Ò»ÏµÁÐĿ¼ÖеÄÒ»×éÎļþ£¬ Ò²¿ÉÒÔʹÓà DOS2UNIX_REGEX¡£ ËüµÄ²ÎÊýÊÇÓë find ¼æÈݵÄÕýÔò±í´ïʽ¡£ ¹ØÓÚÕâÖÖ¸ñʽµÄ˵Ã÷£¬ Çë²ÎÔÄ re_format(7)¡£ Õâ¸öÑ¡Ïî¶Ôת»»ËùÓÐÖ¸¶¨À©Õ¹ÃûµÄÎļþ£¬ ÀýÈçֻת»»Ô´´úÂëÎļþÕâÑùµÄÓ¦Ó÷dz£ÓÐÓãº
USE_DOS2UNIX= yes DOS2UNIX_REGEX= .*\.(c|cpp|h)
¡¡¡¡Èç¹ûÄúÏ£Íû»ùÓÚÏÖ´æµÄÎļþ´´½¨²¹¶¡£¬ ¿ÉÒÔ°ÑÎļþ¸´ÖÆÎª´ø .orig À©Õ¹ÃûµÄÃû×Ö£¬ È»ºóÐÞ¸ÄÔÎļþ¡£ È»ºóʹÓà makepatch Ä¿±ê¸ù¾ÝÐÞ¸ÄÔÚ port µÄ files Ŀ¼ÖÐÉú³É²¹¶¡Îļþ¡£