Ok...¨Æ¹ê¤W¨Ã¤£¤Ó¥i¯à³o»ò²³æ¡Aport ¤è±¥i¯à»Ýn§@¨Ç×§ï¤~¯à¥¿±`¨Ï¥Î¡C ¦]¦¹¡A ¥»¸`±N¤@¨B¤@¨B¨Ó¤¶²Ð¦p¦ó×§ï¤W¤@³¹ªº¼Ë¥»¥H¥¿±`¨Ï¥Î¡C
º¥ý¡A¥ý¤¶²Ð¤@¤U¦b§A©Ò§@ªº port ¥Ø¿ý¤º¥´ make ®É¡A©Ò·|§@þ¨Ç¨Æ±¡ªº¶¶§Ç§a¡C §A¥i¥H¥t¶}¤@µ¡¨Ó¬Ý bsd.port.mk ¤º®e¡A¥H«KÁA¸Ñ§Ṳ́U±¦bÁ¿¤°»ò¡C
¦ý§O¤Ó¾á¤ß¬O§_§¹¥þ¬ÝÀ´ bsd.port.mk ¦b°µÔ£¡A«Ü¦h¤H³£ÁÙ¨S§¹¥þ¬Ý§¹... :->
º¥ý¡A¶i¦æ fetch ¶¥¬q¡C fetch ¬O½T»{ tarball Àɦ³¨S¦³¤w¦b DISTDIR ¤º¤F¡HY fetch ¦b DISTDIR §ä¤£¨ìªº¸Ü¡A¥¦·|·j´M Makefile ¤ºªº MASTER_SITES URL ¡A©ÎªÌ¬O¥D FTP ¯¸±Mªù©ñ³Æ¥÷ distfiles ªº¥Ø¿ý ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ ¡C °²³]³£§ä¤£¨ìªº¸Ü¡A¦ý¬Oºô¸ô¦³±µ¤W Internet ªº¸Ü¡A¥¦·|¸ÕµÛ¥Î FETCH ¨Ó§ì©Ò«ü©wªºÀɮסC §ì¨ì¤§«á¡A¥¦·|§âÀɮצs¨ì DISTDIR ¥H«K¶}©l¨Ï¥Î©Î¤é«á¹B¥Î¡C
¨ä¦¸¡A¶i¦æ extract ¶¥¬q¡A¥¦·|±q DISTDIR ¤º§ä¥X¸Ó port ©Ò»ÝªºÀÉ®×(³q±`¬O gzip ®æ¦¡ªº tarball)¡AµM«á¸ÑÀ£ÁY¨ì WRKDIR ©Ò³]©wªºÁ{®É¥Ø¿ý¦WºÙ(¹w³]¬O work ¥Ø¿ý)¤º ¡C
¤§«á¡A¶i¦æ patch ¶¥¬q¡A ¤@¶}©l·|¥ý®M¥Î PATCHFILES ©Ò«ü©wªº¥ô¦ó patch ÀÉ¡C ±µµÛ¬O PATCHDIR(¹w³]¬O files ¤l¥Ø¿ý) ¤ºªºÀɦW¬° patch-* ¤§ÃþªºÀɮסA·|¥H¦r¥À¶¶§Ç¦Ó³v¤@®M¥Î patch¡C
±µµÛ¬O configure ¶¥¬q¡A¥i¥H·Ó port ªºÃþ«¬¨Ó§@¦UºØ¤£¦P³]©w¥H½Õ¾ã¡A¤ñ¦p¡G
Y¦³©ñ scripts/configure ªº¸Ü¡A ¨º»ò´N·|¶]¸Ì±ªº³]©w¡C
Y¦³³] HAS_CONFIGURE ©Î¬O GNU_CONFIGURE ªº¸Ü¡A¨º»ò´N·|¶] WRKSRC/configure
Y¦³³] USE_IMAKE ªº¸Ü¡A¨º»ò´N·|¶] XMKMF (¹w³]¬O xmkmf -a) ¡C
³Ì«á¬O build ¶¥¬q¡A¥¦·|¦b¸Ó port ªº working directory(¥Ñ WRKSRC ©Ò³]©w) ¤º¶}©l½sĶ¡C Y¦³³] USE_GMAKE ªº¸Ü¡A ¨º»ò´N·|§ï¥Î GNU make ¨Ó½sĶ¡A §_«h´N¥Î¨t²Î¥»¨ªº make ¨Ó½sĶ¡C
¤W±Á¿ªº³£¬O¥´ make ®Éªº¹w³]¶¥¬q¡C ¦¹¥~¡AÁÙ¥i¥H³]©w¦U¶¥¬q¤§«e¡B¤§«án§@ªº¨Æ±¡¡G³z¹L©w¸q pre-something ©Î post-something¡A ©ÎªÌ§â³o¨ÇÀɦWªº script ¥á¨ì scripts ¤l¥Ø¿ý¥h¡A ³o¼Ë¤l¥¦Ì´N·|¦b¦U¹w³]¶¥¬qªº¤§«e¡B¤§«á¶i¦æÅo¡C
Á|¨Ò¨Ó»¡¡AY¦b Makefile ¤º³]©w post-extract¡A¦Ó¥B¦b scripts ¤l¥Ø¿ý¤º¤S¦³ pre-build Àɪº¸Ü¡A¨º»ò¦b§@¸ÑÀ£ÁY¤§«á¡A´N·|¶}©l post-extract ¶¥¬q¥H¶i¦æ¸ÑÀ£ÁY«áªº«áÄò°Ê§@¡A ¦Ó¦b¶] build ¶¥¬q¤§«e¡A´N·|¥ý°õ¦æ pre-build ³o°¦ script §@¥ý´Á·Ç³Æ¡C ³q±`¸û²³æªº×§ï°Ê§@¡A«ØÄ³ª½±µ©ñ¦b Makefile ¤º´N¦n¤F¡A ¦]¬°³o¼Ë·|¤ñ¸û¤è«K¥[¤W³o¨Ç쥻¨S¦³ªº¶¥¬q¡A¦P®É¤]¤è«K¥L¤H¨ó§U°£¿ù ¡C
¹w³]ªº¦U¶¥¬q°Ê§@³£¬O·Ó bsd.port.mk ¤ºªº do-something ¤§Ãþ©Ò©w¸qªº¡C Á|¨Ò¡Gdo-extract ´N¬O©w¸q«ç»ò§âÀɮ׸ÑÀ£ÁYªº¡C Y¹ï¹w³]¤è¦¡Ä±±o¤£§´ªº¸Ü¡A³£¥i¥H¦b¸Ó port ªº Makefile «·s©w¸q¡C
Note: The ``main'' targets (e.g., extract, configure, etc.) do nothing more than make sure all the stages up to that one are completed and call the real targets or scripts, and they are not intended to be changed. If you want to fix the extraction, fix do-extract, but never ever change the way extract operates!
²{¦b¡A§A¤w¸gª¾¹D¥´ make ¨ì©³·|§@¨Ç¤°»ò¨ÆÅo¡A ±µ¤U¨Ó·|±Ð§A¦p¦ó§@§ó§¹¬üªº port¡C