mirror of the now-defunct rocklinux.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

963 lines
32 KiB

  1. Hacking ROCK Linux COMO
  2. ===========================
  3. Escrito por Clifford Wolf
  4. ~~~~~~~~~~~~~~~~~~~~~~~~~
  5. El diccionario Jargon define a un "Hacker" como:
  6. # hacker n.
  7. #
  8. # [originalmente, alguien que construye muebles con un hacha]
  9. # 1. Persona a la cal le divierte explorar los detalles de sistemas
  10. # programables y como apurar sus capacidades, al contrario que la
  11. # mayoria de los usuarios, los cuales prefieren aprender slo lo
  12. # mnimo necesario. 2. Alguien que programa entusiasmdamente (incluso
  13. # obsesivamente) o a quin le divierte ms la programacin que la
  14. # teora acerca de ella. 3. Persona capaz de apreciar un valores de
  15. # hacker. 4. Persona que es buena programando rpidamente. 5. Un
  16. # experto en un programa particular, o alguien que frecuntemente
  17. # realiza el trabajo usndolo, o sobre l. como en 'hacker de Unix'.
  18. # (Las definiciones de la 1 a la 5 son coorelativas, y las personas
  19. # que encajan en ellas se congregan.) 6. Un experto o entusiasta de
  20. # algo. Uno podra ser un hacker de la astronoma por ejemplo. 7.
  21. # Alguien a quin divierte el reto intelectual de superar o rodear las
  22. # limitaciones de forma creativa. 8. [desaprobado] Un intruso malicioso
  23. # que intenta descubrir informacin delicada fisgoneando. De ah
  24. # `hacker de passwords', `hacker de redes'. El trmino correcto para
  25. # este sentido es cracker.
  26. Por lo tanto este "ROCK Linux Hacking COMO" no tiene nada que ver con
  27. seguridad de mquinas o de redes.
  28. ndice
  29. ======
  30. 0. Prefacio
  31. 1. Arbol de directorio de ROCK Linux.
  32. 1.1. Documentation/
  33. 1.2. scripts/
  34. 1.3. package/
  35. 1.3.1. package/base/
  36. 1.3.2. package/x11/
  37. 1.3.3. package/<architecture>/
  38. 1.3.4. package/<person>/
  39. 1.4. misc/
  40. 1.5. target/
  41. 1.6. architecture/
  42. 1.7. download/
  43. 1.8. src*/ and build/
  44. 1.9. config/*
  45. 2. Build- y otros scripts
  46. 2.1. ./scripts/Config
  47. 2.2. ./scripts/Download
  48. 2.3. Scripts para construir lo necesario
  49. 2.3.1. ./scripts/Build-Target
  50. 2.3.2. ./scripts/Build-Pkg
  51. 2.3.3. ./scripts/Build-TarBz2
  52. 2.3.4. ./scripts/Build-Tools
  53. 2.3.5. ./scripts/Build-CrossCC
  54. 2.3.6. ./scripts/Build-Job
  55. 2.4. Varias pequeas ayudas
  56. 2.4.1. ./scripts/Cleanup
  57. 2.4.2. ./scripts/Create-Links
  58. 2.4.3. ./scripts/Create-PkgList
  59. 2.4.4. ./scripts/Create-PkgQueue
  60. 2.4.5. ./scripts/Create-SrcTar
  61. 2.4.6. ./scripts/Create-Diff
  62. 2.4.7. ./scripts/Create-CkSumPatch
  63. 2.4.8. ./scripts/Create-DescPatch
  64. 2.4.9. ./scripts/Create-PkgUpdPatch
  65. 2.4.10. ./scripts/Create-ErrList
  66. 2.4.11. ./scripts/Create-UpdList
  67. 2.4.12. ./scripts/Update-System
  68. 2.4.13. ./scripts/Puzzle
  69. 2.4.14. ./scripts/Help
  70. 2.4.15. ./scripts/Internal
  71. 2.5. Scripts para realizar chequeos
  72. 2.5.1. ./scripts/Check-PkgVersion
  73. 2.5.2. ./scripts/Check-PkgFormat
  74. 2.5.3. ./scripts/Check-System
  75. 2.5.4. ./scripts/Check-Deps
  76. 2.6. Scripts para actualizar el arbol de fuentes
  77. 2.6.1. ./scripts/Update-Src
  78. 3. Configuracin del sistema
  79. 3.1. Fundamentos
  80. 3.2. Comandos especiales
  81. 3.2.1. comment 'Descripci�n' ["Ayuda"]
  82. 3.2.2. comment_id 'Descripci�n' 'ID' ["Ayuda"]
  83. 3.2.3. bool 'Descripci�n' Variable Valor_Defecto ["Ayuda"]
  84. 3.2.4. text 'Descripci�n' Variable Valor_Defecto ["Ayuda"]
  85. 3.2.5. choice Variable Valor_Defecto Value1 'Descripci�n1' [ ... ]
  86. 3.2.6. const Variable Valor_Defecto
  87. 3.2.7. Block_begin y block_end
  88. 3.2.8. expert_begin y expert_end
  89. 3.3. Variables especiales
  90. 3.3.1. ROCKCFG_*
  91. 3.3.2. ROCKCFGSET_*
  92. 3.3.3. CFGTEMP_*
  93. 3.4. Jerarquia de llamada de Config.in
  94. 3.5. Creaccin del fichero Packages
  95. 4. Paquetes
  96. 4.1. Fundamentos
  97. 4.2. Los ficheros *.desc
  98. 4.2.1. Prioridad de paquetes
  99. 4.2.2. URLs de descargas
  100. 4.3. Los ficheros *.desc
  101. 4.3.1. FIXME
  102. 4.4. Los ficheros *.patch
  103. 4.5. Los ficheros *.doc
  104. 4.6. Los ficheros *.init
  105. 5. Targets
  106. 6. Arquitecturas
  107. ( created with >> perl -pe '$_="" unless /^\t?[0-9]/; s/^\t/\n/;' << )
  108. 0. Prefacio
  109. ===========
  110. Este documento describe como extender y modificar los scripts de compilacin
  111. de ROCK Linux.
  112. Necesitas tener buenos conocimientos de shell scripting para entender las
  113. tcnicas descritas en ste documento. Algo de prctica compilando e instalando
  114. software en sistemas UNIX tambin te ayudar.
  115. Usa el cdigo existente (paquetes, targets, etc.) como ejemplos. Las
  116. explicaciones dadas en ellos, son con frecuencia muy informativas y leer el
  117. cdigo te ayudar a entenderlos.
  118. Corecciones, etc. son siempre bienvenidas (mejor si es en diffs unificados).
  119. -Clifford wolf <clifford@clifford.at>
  120. 1. Arbol de directorio de ROCK Linux
  121. ====================================
  122. 1.1. Documentation/
  123. ===================
  124. La Documentacin de ROCK Linux. Lela toda - si puedes! Deberas tambin
  125. visitar nuestra pgina oficial en www.rocklinux.org y subscribirte a las
  126. listas de correo.
  127. 1.2. scripts/
  128. =============
  129. Todos los scripts de compilacin y ayuda pueden ser encontrados aqu. Una
  130. descripcin detalla de ellos, pueden ser encontrados en el captulo 2.
  131. Estate seguro de llamarlos siempre desde el directorio base (como
  132. "./scripts/Config") y NO entrar a scripts/ y ejecutarlos desde ah!
  133. 1.3. package/
  134. =============
  135. La parte especfica de los fuentes de paquetes de ROCK Linux es almacenada
  136. en este arbol. Hay para cada paquete al menos un fichero ".desc" (mira el
  137. captulo 4 para ms detalles acerca del formato de paquetes).
  138. Dentro del directorio package/, cada contenedor de paquete posee su propio
  139. subdirectorio. Un contenedor de paquete es una unidad organizativa que
  140. agrupa paquetes juntos. Todos los paquetes en un mismo contenedor son
  141. mantenidos por la misma persona o por el mismo grupo.
  142. Dentro del directorio del contenedor, cada paquete tiene su propio
  143. subdirectorio. Por ejemplo el paquete 'gcc' puede ser encontrado en "package/
  144. base/gcc".
  145. 1.3.1. package/base/
  146. --------------------
  147. El contenedor "base" incluye los paquetes ms importantes del corazn del
  148. sistema. Cosas como el compilador, el ncleo y los paquetes de comandos unix
  149. estndar (fileutils, ...).
  150. Los paquetes "base" son mantenidos por Clifford Wolf <clifford@rocklinux.org>.
  151. 1.3.2. package/x11/
  152. -------------------
  153. El contenedor "x11" incluye los paquetes de x11, gnome y kde. Todo lo que
  154. necesitas para configurar una estacin grfica incluyendo las herramientas ms
  155. importantes.
  156. Los paquetes "x11" son mantenidos por Rene Rebe <rene@rocklinux.org>.
  157. 1.3.3. package/<architecture>/
  158. -------------------
  159. POR HACER
  160. 1.3.4. package/<person>
  161. -------------------
  162. POR HACER
  163. 1.4. misc/
  164. ==========
  165. Varias cosas que no tienen cabida en otro lugar son incluidas aqu.
  166. 1.5. target/
  167. ============
  168. Un "target" es una distribucin basada en ROCK Linux. El "rock linux est�ndar"
  169. es el target "generic", construido con las opciones por defecto.
  170. Cada target tiene su propio subdirectorio en este arbol.
  171. 1.6. architecture/
  172. ==================
  173. Cada una de las arquitecturas soportadas por ROCK Linux tiene su propio
  174. subdirectorio en este arbol.
  175. 1.7. download/
  176. ==============
  177. Los ficheros tar de los paquetes originales son descargados a este directorio
  178. por el script ./script/Download. Slo los ficheros necesarios para compilar el
  179. target seleccionado sern descargados.
  180. 1.8. src*/ y build/
  181. ===================
  182. Las configuraciones de compilacion (creadas por './scripts/Config') son
  183. almacenados en el arbol config/. Cada configuracin posee su propio
  184. subdirectorio ah.
  185. 2. Build- y otros scripts
  186. =========================
  187. 2.1. ./scripts/Config
  188. =====================
  189. El fichero ./script/Config es el script configuracin principal. Este analiza
  190. los ficheros de metaconfiguracin descritos en el captulo 3 y crea los
  191. ficheros de configuracin en config/<config-name>/.
  192. 2.2. ./scripts/Download
  193. =======================
  194. El script ./scripts/Download es la herramienta encargada de la descarga de
  195. los fuentes de los paquetes. Una llamada al script sin parmetros imprime
  196. un mensaje de ayuda.
  197. Para descargar ficheros slo:
  198. ./scripts/Download download/P_base/linux/linux-2.4.18.tar.bz2
  199. Descargar todos los ficheros de un slo paquete:
  200. ./scripts/Download -package linux
  201. Todos los ficheros necesarios para el target escogido:
  202. ./scripts/Download -required
  203. O smplemente para descargar todo:
  204. ./scripts/Download -all
  205. Si no especificas un mirror con la opcin -mirror, el script conectar a
  206. www.rocklinux.org y autodetectar el mejor mirror.
  207. La descarga de todos los ficheros requeridos desde un cdrom local (montado):
  208. ./scripts/Download -mirror file:///mnt/cdrom/ -required
  209. 2.3. Scripts para construir lo necesario
  210. ========================================
  211. 2.3.1. ./scripts/Build-Target
  212. -----------------------------
  213. Compila el target seleccionado. Dependiendo de tu hardware y de la
  214. configuracin seleccionada con ./scripts/config, esto puede tomar algunos
  215. das para terminar. Este script ignora cualquier opcin pasada.
  216. 2.3.2. ./scripts/Build.Pkg
  217. --------------------------
  218. Compila un nico paquete. Una llamada a este script sin argumentos, imprimir
  219. un mensaje de ayuda. En la mayora de los casos, las opciones son slo
  220. necesitadas por Build-Target cuando se construye una distribucin completa.
  221. Para la construccin de un slo paquete:
  222. ./scripts/Build-Pkg gawk
  223. Cuidado: La recompilacin de un paquete podr sobreescribir o borrar los
  224. ficheros de configuracin. Si no desas que sto ocurra, usa pkg-update con un
  225. paquete binario precompilado.
  226. 2.3.3. ./scripts/Build-TarBz2
  227. -----------------------------
  228. Este script crea un paquete binario (.tar.bz2) basado en los ficheros
  229. encontrados en el sistema. Es usado por ./script/Build-Pkg cuando es llamado
  230. con la opcin --maketar, aunque es tambin posible usarlo directamente.
  231. 2.3.4. ./scripts/Build-Tools
  232. ----------------------------
  233. Script que crea el directorio 'build.xxxxxx.tools' (dnde 'xxxxxx' es el
  234. identificativo de configuracin) el cual contiene varias aplicaciones de
  235. ayuda usadas por Build-Pkg y otros scripts.
  236. Cundo el script es llamado con la opcin -cleanup, es forzado a realizar una
  237. recompilacin de los ficheros en el directorio de herramientas. En la mayora
  238. de los casos ste script ser llamado por otros scripts (y no por el usuario).
  239. 2.3.5. ./scripts/Build-CrossCC
  240. ------------------------------
  241. Para una compilacin cruzada de ROCK Linux necesitas un compilador cruzado.
  242. Este script crea el compilador-cruzado. El compilador cruzado y las binutils
  243. cruzadas sern instaladas en el arbol build/ dnde el script Build-Pkg espera
  244. encontrarlo.
  245. 2.3.6. ./scripts/Build-Job
  246. --------------------------
  247. Este script es el cliente cuando corres ./scripts/Target en una compilacin
  248. en modo paralelo (cluster).
  249. 2.4. Varias pequeas ayudas
  250. ===========================
  251. 2.4.1. ./scripts/Cleanup
  252. ------------------------
  253. El script Cleanup puede ser usado para borrar los directorios src* y build*,
  254. los cuales son creados por los scripts de compilacin. Nunca borres estos
  255. directorios de forma manual!.
  256. Por defecto ./scripts/Cleanup slo borra los direcorios src*. Los directorios
  257. build* sern borrados cuando sea pasada la opcin -full.
  258. 2.4.2. ./scripts/Create-Links
  259. -----------------------------
  260. Este sencillo script crea enlaces simblicos desde el directorio base de ROCK
  261. Linux a otro directorio. Esto puede ser util si tienes los fuentes de ROCK
  262. Linux en un disco (Compartido por NFS, etc ) y quieres construirlo en algn
  263. lugar ms:
  264. /disks/raid/archive/os/rock# mkdir -p /disks/fast/rock
  265. /disks/raid/archive/os/rock# ./scripts/Create-Links /disks/fast/rock
  266. 2.4.3. ./scripts/Create-PkgList
  267. -------------------------------
  268. Crea una lista de todos los paquetes disponibles. Si se le pasa el nombre de
  269. una arquitectura como parmetro, slo los paquetes disponibles sobre esa
  270. arquitectura sen listados.
  271. Es script es usado por ./scripts/Config durante el proceso de creaccin de
  272. los ficheros de paquetes.
  273. 2.4.4. ./scripts/Create-PkgQueue
  274. --------------------------------
  275. Crea una lista de paquetes que podran ser los siguientes a compilar. El
  276. primer parmetro es el nmero mximo de paquetes a imprimir (0=sin lmite) y
  277. el segundo parmetro es el directorio raiz dnde el script puede encontrar la
  278. informacin de /var/adm/... que necesita. Por ejemplo:
  279. # ./scripts/Create-PkgQueue 3 build/1.7.0-DEV-intel-generic/root
  280. 2 X --2------9 010.050 base strace 4.4 / development/tool 159
  281. 2 X --2------9 010.052 base ltrace 0.3.10 / development/tool 85
  282. 2 X --2-4----9 010.055 base perl5 5.6.1 / development/interpreter 125
  283. Este script es usado al inicio por ./scripts/Build-Target.
  284. 2.4.5. ./scripts/Create-SrcTar
  285. ------------------------------
  286. Crea un fichero .tar.bz2 que contiene los fuentes de ROCK Linux, Este script
  287. es usado por los desarrolladores de ROCK Linux cuando liberan snapshots o
  288. nuevas versiones.
  289. 2.4.6. ./scripts/Create-Diff
  290. ----------------------------
  291. Este script es la herramienta recomendada para construir los parches diff.
  292. (Cuando haces algn cambio a los fuentes de ROCK Linux y quieres compartir tu
  293. trabajo).
  294. Por ejemplo: ./scripts/Create-Diff ../rock-src.orig . > mychanges.diff
  295. 2.4.7. ./scripts/Create-CkSumPatch
  296. ----------------------------------
  297. Script que puede ser usado por los desarrolladores de ROCK Linux para crear de
  298. forma automtica los checksums de las descargas en los ficheros .desc en uno
  299. o ms contenedores de paquetes.
  300. Por ejemplo: ./scripts/Create-CkSumPatch extra2 ; patch -p1 < cksum.patch
  301. 2.4.8. ./scripts/Create-DescPatch
  302. ---------------------------------
  303. Este script puede ser usado por los desarrolladores de ROCK Linux para que de
  304. forma automtica adopten el formato del paquete los ficheros .desc.
  305. 2.4.9. ./scripts/Create-PkgUpdPatch
  306. -----------------------------------
  307. Script que permite a los desarrolladores de ROCK Linux crear automticamente
  308. parches de actualizacin de paquetes (despus de evaluar la salida del script
  309. ./scripts/Check-PkgVersion). Por ejemplo:
  310. ./scripts/Create-PkgUpdPatch > update.patch << EOT
  311. automake-1.6.1, bin86-0.16.3, bison-1.35, curl-7.9.6,
  312. diffutils-2.8.1, dump-0.4b28, ifhp-3.5.7, net-snmp-4.2.4,
  313. ntp-4.1.1, pciutils-2.1.10, sendmail.8.12.3, silo-1.2.5,
  314. tree-1.4b2, util-linux-2.11q, whois_4.5.25
  315. EOT
  316. El fichero .patch de actualizacin resultante debera de ser chequeado
  317. manualmente antes de ser aplicado con 'patch -1 < update.patch'.
  318. 2.4.10. ./scripts/Create-ErrList
  319. --------------------------------
  320. Muestra una salida con la lista de paquetes que fallaron al compilarse
  321. (incluyendo los nmeros de stage). en el orden correcto.
  322. 2.4.11. ./scripts/Create-UpdList
  323. --------------------------------
  324. Crea la lista de paquetes que estn activos en la configuracin actual y han
  325. cambiado desde que los binarios instalados en el sistema han sido generados.
  326. La comparacin es realizada usando los checksum del paquete fuente almacenados
  327. en /var/adm/packages/<nombre-de-paquete>.
  328. 2.4.12. ./scripts/Update-System
  329. -------------------------------
  330. Actualiza (recompila) todos los paquetes en el sistema local para los cuales
  331. hay disponible alguna nueva versin. Create-UpList es usado para generar la
  332. lista de paquetes que necesitan ser actualizados.
  333. 2.4.13. ./scripts/Puzzle
  334. ------------------------
  335. Algunos ficheros en el rbol de fuentes son creados automticamente. Este
  336. script los regenera todos, y debera de ser llamado cada vez que uno de los
  337. ficheros de los fuentes haya cambiado.
  338. 2.4.14. ./scripts/Help
  339. ----------------------
  340. Este script espera el nombre de fichero de un script en ./scripts/ y salta a
  341. la posicin correcta en la documentacin. Es una sencilla envoltura para
  342. 'less'.
  343. 2.4.15. ./scripts/Internal
  344. --------------------------
  345. Script que usa Clifford Wolf para liberar snapshots y mantener los Mirrors de
  346. FTP actualizados.
  347. 2.5. Scripts para realizar chequeos
  348. =============================
  349. 2.5.1. ./scripts/Check-PkgVersion
  350. ---------------------------------
  351. Script que es usado por los desarrolladores de ROCK Linux para chequear por
  352. nuevas versiones de paquetes. Los resultados de la ltima ejecucin son
  353. siempre almacenados en un directorio llamado checkver/ y si hay alguna
  354. diferencia en la ejecucin actual, un fichero *.msg ser escrito en checkver/.
  355. (lee el script para ms detalles)
  356. Por ejemplo: ./scripts/Check-PkgVersion -repository base
  357. for x in checkver/*.new ; do mv -f $x ${x%.new}.txt ; done
  358. cat checkver/*.msg > todo.txt
  359. Nota: Los ficheros .mgs viejos sern automticamente borrados cuando corras
  360. Check-PkgVersion la prxima vez.
  361. 2.5.2. ./scripts/Check-PkgFormat
  362. --------------------------------
  363. Este script hace unos pocos testeos sencillos para autodetectar errores en los
  364. ficheros *.desc y *.conf de los paquetes.
  365. Por ejemplo: ./scripts/Check-PkgFormat -repository extra1
  366. 2.5.3. ./scripts/Check-System
  367. -----------------------------
  368. Este script hace uns simple test para autodetectar posibles errores con el
  369. sistema de la mquina linux.
  370. 2.5.4. ./scripts/Check-Deps
  371. ---------------------------
  372. Este comando chequea si el orden del paquete de la compilacin actual es
  373. correcto para pasar todas las dependencias de paquetes.
  374. 2.6. Scripts for updating the source tree
  375. =========================================
  376. 2.6.1. ./scripts/Update-Src
  377. ---------------------------
  378. Actualiza el rbol de fuentes con rsync desde www.rocklinx.org.
  379. Cuidado: Esto borrar los cambios que realizaras en el rbol de fuentes.
  380. 3. Configuration System
  381. =======================
  382. 3.1. Fundamentos
  383. ================
  384. El script de configuracin ./sripts/Config genera los ficheros en el
  385. directorio /config/${config}/:
  386. config las opciones de configuracin
  387. packages los paquetes que son compilados en esa configuracin
  388. ./scripts/Config define algunas funciones de shell especiales y contiene el
  389. bucle principal del programa de configuracin. La estructura de los mens de
  390. configuracin es almacenada en scripts/config.in (y otros ficheros config.in
  391. incluidos por el). Echa un vistazo a scripts/config.in para ms informacin
  392. sobre qu ficheros incluyen a qu otros.
  393. 3.2. Comandos especiales
  394. ========================
  395. Cada vez que el men es mostrado (por ejemplo, despus de arrancar ./scripts/
  396. Config y cada vez que se realiza algn cambio), scripts/config.in es ejecutado
  397. y est usando sus propios comandos especiales para escribir el fichero de
  398. configuracin y aadir items al men.
  399. 3.2.1. comment 'Descripci�n' ["Ayuda"]
  400. -------------------------------------
  401. Aade un comentario al men de configuracin (y lo hace sin ninguna funcin).
  402. Por ejemplo:
  403. comment '-Arquitectura, CPU y Optimizaci�n' "
  404. Selecciona que optimizacin de CPU se corresponde con tu mquina."
  405. <Descripcin> Ttulo del item en el menu de configuracin (texto del
  406. comentario).
  407. <Ayuda> Este es un campo opcional donde puedes aadir un comentario
  408. ms largo que ser mostrado cuando selecciones esta lnea de
  409. comentario y pulses sobre el botn de ayuda.
  410. 3.2.2. comment_id 'Descripci�n' 'ID' ["Ayuda"]
  411. ---------------------------------------------
  412. Aade un comentario al men de configuracin (y lo hace sin ninguna funcin).
  413. Por ejemplo:
  414. comment '-Arquitectura, CPU y Optimizaci�n' COMMENT_ARCH_CPU_OPT "
  415. Selecciona que optimizacin de CPU se corresponde con tu mquina."
  416. <Descripcin> Ttulo del item en el menu de configuracin (texto del
  417. comentario).
  418. <ID> Identificativo que ser usado para identificar un comentario.
  419. Es til cuando usas ficheros config.hlp para almacenar la
  420. ayuda.
  421. <Ayuda> Este es un campo opcional donde puedes aadir un comentario
  422. ms largo que ser mostrado cuando selecciones esta lnea de
  423. comentario y pulses sobre el botn de ayuda.
  424. 3.2.3. bool 'Descripci�n' Variable Valor_Defecto ["Ayuda"]
  425. ---------------------------------------------------
  426. Aade un item booleano (on/off) al men. Por ejempo:
  427. bool 'Abortar cuando la compilaci�n de un paquete falle'
  428. ROCKCFG_ABORT_ON_ERROR 1 "
  429. Cundo selecciones sta opcin, Build-Target abortar cuando un paqute
  430. falle al compilar"
  431. <Descripcin> Ttulo del item en el men de configuracin
  432. <Variable> Nombre de la variable de configuracin asociada a ste item
  433. del men
  434. <Valor_Defecto> '1' = On, '0' = Off
  435. <Ayuda> Este es un campo opcional donde puedes aadir un comentario
  436. ms largo que ser mostrado cuando selecciones esta lnea de
  437. comentario y pulses sobre el botn de ayuda
  438. La variable estar activada a '1' o a '0'.
  439. 3.2.4. text 'Descripci�n' Variable Valor_Defecto ["Help"]
  440. ---------------------------------------------------
  441. Aade un item de texto en el men. Si el texto debe de coincidir con un patrn
  442. especial, modifica la variable de configuracin antes de hacer la llamada a la
  443. funcin text. Por ejemplo:
  444. ROCKCFG_MAKE_JOBS="`echo $ROCKCFG_MAKE_JOBS | sed 's,[^0-9],,g'`"
  445. text 'N�mero de procesos make paralelos (make -j)' ROCKCFG_MAKE_JOBS 1
  446. <Descripcin> Ttulo del item en el men de configuracin
  447. <Variable> Nombre de la variable de configuracin asociada a ste item
  448. del men
  449. <Valor_Defecto> Valor por defecto
  450. <Ayuda> Este es un campo opcional donde puedes aadir un comentario
  451. ms largo que ser mostrado cuando selecciones esta lnea de
  452. comentario y pulses sobre el botn de ayuda
  453. 3.2.5. choice Variable Valor_Defecto Valor1 'Descripci�n1' [ ... ]
  454. ------------------------------------------------------------------
  455. Aade un item al men de mltiples opciones. Por ejemplo:
  456. choice ROCKCFG_INTEL_OPT generic \
  457. generic "Sin optimizaci�n especial" \
  458. i386 "Optimizado para Intel 386" \
  459. i486 "Optimizado para Intel 486" \
  460. i586 "Optimizado para Intel Pentium" \
  461. i686 "Optimizado para Intel Pentium-Pro" \
  462. k6 "Optimizado para AMD K-6" \
  463. k7 "Optimizado para AMD Athlon"
  464. <Variable> Nombre de la variable de configuracin asociada a ste item
  465. del men
  466. <Valor_Defecto> Valor por defecto
  467. <ValorN> Valor para la opcin N
  468. <DescripcinN> Ttulo del item en el men de configuracin si la opcin N
  469. est activa
  470. 3.2.6. const Variable Valor_Defecto
  471. -----------------------------------
  472. Asigna la variable con el valor por defecto dado sin mostrar ningn item en
  473. el men.
  474. 3.2.7. block_begin y block_end
  475. ------------------------------
  476. Un conjunto de items de men, los cuales permanecen juntos, deben estar entre
  477. block_begin y block_end. block_begin espera un parmetro numrico que
  478. especifica el nmero de carcteres que el ttulo del item del men deber ser
  479. desplazado a la derecha. Por ejemplo:
  480. comment '--- Compilador por defecto para compilar (casi) todo'
  481. block_begin 5
  482. choice ROCKCFG_PKG_GCC_DEFAULT_CC gcc2 $list
  483. if [ $ROCKCFG_PKG_GCC_DEFAULT_CC = 'gcc2' ] ; then
  484. bool 'Usar GCC Stack-Smashing Protector' ROCKCFG_PKG_GCC_STACKPRO 0
  485. [ $ROCKCFG_PKG_GCC_STACKPRO = 1 ] &&
  486. ROCKCFG_ID="$ROCKCFG_ID-stackprotector"
  487. else
  488. ROCKCFG_ID="$ROCKCFG_ID-$ROCKCFG_PKG_GCC_DEFAULT_CC"
  489. fi
  490. block_end
  491. 3.2.8. expert_begin y expert_end
  492. --------------------------------
  493. Las opciones que slo deberan de ser mostradas si el 'modo experto' est
  494. activo, deben ir entre expert_begin y expert_end.
  495. 3.3. Variables especiales
  496. =========================
  497. 3.3.1. ROCKCFG_*
  498. ----------------
  499. Todas las variables de configuracin deberan de empezar con "ROCKCFG_". Las
  500. variables que no son principales tienen prefijos de extensin:
  501. Arquitecturas: ROCKCFG_ARCH_<Nombre-Arquitectura>_*
  502. Targets: ROCKCFG_TRG_<Nombre-Target>_*
  503. Paquetes: ROCKCFG_PKG_<Nombre-Paquete>_*
  504. Algunas variables son manejadas por ./scripts/Config de una manera especial:
  505. ROCKCFG_ID Es la descripcin corta de la configuracin. Las opciones
  506. de configuracin importantes deberan de aadir algo a sta
  507. variable.
  508. ROCKCFG_EXPERT Si sta puesta a '0', los items entre expert_begin y
  509. expert_end no sern mostrados y los valores por defecto para
  510. esas opciones sern usados.
  511. 3.3.2. ROCKCFGSET_*
  512. -------------------
  513. Las variables ROCKCFGSET_* pueden ser usadas para preservar una opcin (por
  514. ejemplo, en un target). Si por ejemplo, ROCKCFGSET_STRIP est puesta a 1,
  515. ROCKCFG_STRIP tendr el valor 1 y el usuario no podr cambiar su valor.
  516. 3.3.3. CFGTEMP_*
  517. ----------------
  518. Estas variables pueden ser usadas para intercambio de datos entre los
  519. distintos ficheros config.in. Las variables no principales tienen prefijos de
  520. extensin:
  521. Arquitecturas: ROCKCFG_ARCH_<Nombre-Arquitectura>_*
  522. Targets: ROCKCFG_TRG_<Nombre-Target>_*
  523. Paquetes: ROCKCFG_PKG_<Nombre-Paquete>_*
  524. Por ejemplo, la creaccin dinmica de una opcin de mltiples elecciones:
  525. architecture/intel/preconfig.in:
  526. CFGTEMP_ARCHLIST="$CFGTEMP_ARCHLIST intel IBM_PCs_and_compatible"
  527. architecture/powerpc/preconfig.in:
  528. CFGTEMP_ARCHLIST="$CFGTEMP_ARCHLIST powerpc PowerPC_Workstations"
  529. scripts/config.in:
  530. choice ROCKCFG_ARCH $ROCKCFG_ARCH $CFGTEMP_ARCHLIST
  531. 3.4. Jerarquia de llamada de Config.in
  532. ======================================
  533. Todsos los ficheros config.in son ejecutados desde scripts/config.in en el
  534. siguiente orden:
  535. - architecture/*/preconfig.in
  536. * Selecting Architecture
  537. * architecture/$ROCKCFG_ARCH/config.in
  538. - target/*/preconfig.in
  539. - package/*/*/preconfig.in
  540. * Selecting Target
  541. * target/$ROCKCFG_TARGET/config.in
  542. * package/*/*/config.in
  543. * Various common build options
  544. - package/*/*/postconfig.in
  545. - architecture/$ROCKCFG_ARCH/postconfig.in
  546. - target/$ROCKCFG_TARGET/postconfig.in
  547. Slo los scripts marcados con '*' podrn interactuar con el usuario (creando
  548. items del men). El resto podr slo activar y modificar distintas variables.
  549. 3.5. Creaccin del fichero Packages
  550. ===================================
  551. EL script ./scripts/Config crea un fichero de paquetes con todos los paquetes
  552. disponibles para la arquitectura seleccionada antes de llamar a
  553. scripts/config.in. Cada fichero config.in podr ahora modificar este fichero
  554. Packages creando un fichero Packages.new y renombrndolo a Packages. Por
  555. ejemplo:
  556. if [ $ROCKCFG_TRG_GENERIC_BUILDSF != 1 ] ; then
  557. awk '$4 != "sourceforge" { print }' \
  558. < config/$config/packages \
  559. > config/$config/packages.new
  560. mv config/$config/packages.new config/$config/packages
  561. fi
  562. EL fichero de paquetes esta separado por blancos y es facil de analizar con
  563. grep, sed y awk.
  564. Los campos son:
  565. X/O 'X' = el paquete est activo, 'O' = el paquete no est activo
  566. Si no quieres que otro config.in reactive un paquete, podrs tambin,
  567. smplemente borrar la lnea del fichero.
  568. Stages Niveles de stage igual que los especificados en la marca [P] de los
  569. paquetes (ver el prximo captulo)
  570. Pri. Prioridad especificada igual que en el tag [P] de los paquetes (atajo
  571. para el fichero)
  572. Resp. Nombre del contenedor dnde se encuentra el paquete
  573. Name Nombre del paquete
  574. Ver. Versin del paquete
  575. Prefix Prefijo del paquete (seguido de '/')
  576. Cat. Categoras del paquete (siempre en minsculas, conteniendo al menos
  577. un /)
  578. Flags Banderas del paquete (siempre maysculas)
  579. Counter Smplemente ignora ste fichero
  580. Cmo el campo 'counter', las categoras u las banderas son siempre seguidas y
  581. precedidas de un ' ', puedes de forma sencilla borrar todos los paquetes menos
  582. dietlibc-ready con un comando como:
  583. grep ' DIETLIBC ' < config/$config/packages \
  584. > config/$config/packages.new
  585. Leete los ficheros config.in que hay para ms detalles.
  586. 4. Paquetes
  587. ===========
  588. 4.1. Fundamentos
  589. ================
  590. Cada paquete tiene su propio subdirectorio en package/<contenedor>/. Los
  591. contenedores son unidades organizativas que agrupan paquetes. Cada contenedor
  592. pertenece a un desarrollador de ROCK Linux o a un grupo de desarrolladores.
  593. El nombre del paquete es de 2 a 25 carcteres de largo y debe coincidir con
  594. la expresin regular:
  595. /^[a-z0-9][a-z0-9\.\+_-]*[a-z0-9\+]$/
  596. (Con un mnimo de 2 carcteres. El primero: letra en minscula o nmero. El
  597. ltimo: letra en minscula o nmero o '+'. El resto: letras en minscula,
  598. nmeros o uno de los siguientes carcteres: '.', '+', '_' o '-'.)
  599. Un nombre de paquete no debe aparecer en ms de un contenedor.
  600. Otros subdirectorios (que no sean de paquetes) estn permitidos, si no empiezan
  601. con una letra minscula o un nmero (as por ejemplo, los directorios "CVS"
  602. estn permitidos) y que no contenga algn fichero *.desc.
  603. Este directorio de paquete contiene toda la informacin necesaria para
  604. descargar y compilar un paquete.
  605. 4.2. Los ficheros *.desc
  606. ========================
  607. Cada paquete DEBE tener un fichero <nombre_de_paquete>.desc. Este contiene toda
  608. la metainformacin del paquete. Echa un vistazo al fichero PKG-DESC-FORMAT para
  609. una descripcin de las etiquetas disponibles.
  610. 4.2.1. Prioridad de paquetes
  611. ----------------------------
  612. La etiqueta [P] es usada para indicar la prioridad del paquete. Esta etiqueta
  613. tiene 3 campos:
  614. [P] X --3-----9 010.066
  615. El primer campo ('X' o 'O') especifica si el paquete debera de ser construido
  616. por defecto o no. Este valor suele valer 'X' en casi todos los paquetes. Esta
  617. bandera podr ser sobreescrita por la configuracin (captulo 3).
  618. El segundo campo lista los stages en los cuales el paquete debera de ser
  619. compilado. Hay 10 stages (0-9). Build-Target empezar con la compilacin en el
  620. stage 1, despus stage 2, etc... El stage 9 slo es construido si se activa en
  621. la configuracin 'Make rebuild stage (stage 9)'. Los stages 0 y 1 son stages
  622. para la compilacin cruzada, y deberan slo de contener paquetes que soporten
  623. este tipo de compilacin. De esta forma los stages pueden ser usados para
  624. indicar el orden de compilacin (por ejemplo, el stage 3 se construye antes que
  625. el stage 5) y para reconstruir un paquete varias veces.
  626. El tercer campo es usado para especificar el orden de compilacin junto con los
  627. stages. Este es un ordenado por texto simplemente.
  628. 4.2.2. URLs de descarga
  629. -----------------------
  630. Generalmente un paquete debe descargar uno o ms ficheros de fuentes. Estos
  631. ficheros son descargados usando el script ./scripts/Download y se almacenan en
  632. el directorio 'download/<nombre-de-repositorio>/<nombre-de-paquete>/'.
  633. Cada fichero que pueda ser descargado tiene su prpia etiqueta [D] en el
  634. fichero *.desc del paquete. La etiqueta [D] tiene 3 campos:
  635. [D] 354985877 gcc-2.95.3.tar.gz ftp://ftp.gnu.org/pub/gnu/gcc/
  636. El primer campo es el checksum para el fichero. Esos checksums son creados con
  637. por ejemplo:
  638. ./scripts/Download -mk-cksum download/base/gcc2/gcc-2.95.3.tar.bz2
  639. Si el checksum es '0', significa que no ha sido creado un checksum. El script
  640. './scripts/Create-CkSumPatch'puede ser usado para crear un parche que aada
  641. esos checksums.
  642. Para los que no tengan checksum, por alguna u otra razn (por ejemplo, por que
  643. el contenido del sitio original esta cambiando con frecuencia), una cadena
  644. consistente de slamente carcteres 'X' puede ser usada. Por ejemplo:
  645. [D] XXXXXXXXXX RFCs3001-latest.tar.gz ftp://ftp.rfc-editor.org/in-notes/tar/
  646. El segundo campo es el nombre del fichero. Los ficheros con el sufijo *.gz o
  647. *.tgz son automticamente convertidos a *.bz2 o *.tbz2 por el script ./scripts/
  648. Download.
  649. El tercer parmetro es la URL de descarga sin la parte correspondiente al
  650. nombre del fichero. Si el nombre del fichero local difiere del remoto, la URL
  651. debera de ser antecedido por un carcter '!'. Por ejemplo:
  652. [D] 2447691734 services.txt !http://www.graffiti.com/services
  653. El script ./scripts/Check-PkgVersion tambin usa esta etiqueta [D] para buscar
  654. por nuevas versiones del paquete. El script './scripts/Check-PkgVersion' puede
  655. tambin ser directamente configurado usando las etiquetas [CV-URL], [CV-PAT] y
  656. [CV-DEL].
  657. 4.3. Los ficheros *.conf
  658. ========================
  659. ./scripts/Build-Pkg tienen un cdigo semi-inteligente para compilar e instalar
  660. un paquete. Esto lo hace la funcin de shell build_this_package(), la cual
  661. puede se encontrada en ./scripts/Build-Pkg. Este scripts se configura usando
  662. varias variables que pueden ser activadas o modificadas en el fichero *.conf.
  663. Una lista de esas variables puede ser encontrada en el fichero PKG-BUILD-VARS
  664. en este directorio. Lee los ficheros *.conf para ver ejemplos.
  665. 4.3.1. FIXME
  666. ------------
  667. 4.4. Los ficheros *.patch
  668. =========================
  669. Todos los ficheros *.patch en el directorio de paquetes son automticamente
  670. aplicados despues de que el fichero tar de los fuentes del paquete sea
  671. extraido. El parche *.patch.<arquitectura> slo se aplica cuando se compila
  672. para la arquitectura indicada.
  673. 4.5. Los ficheros *.doc
  674. =======================
  675. Todos los ficheros *.doc en el directorio de paquetes son automticamente
  676. compiados al directorio de documentacin del paquete (por ejemplo /usr/share/
  677. /doc/$pkg) sin el sufijo ".doc".
  678. 4.6. Los ficheros *.init
  679. ========================
  680. Los scripts de inicializacin son isntalados usando la funcin install_init.
  681. Esta funcin convierte un fichero *.init en un script de inicio estilo SysV.
  682. Echale un vistazo a
  683. package/base/devfsd/devfsd.conf y
  684. package/base/devfsd/devfsd.init
  685. o
  686. package/base/sysklogd/sysklogd.conf y
  687. package/base/sysklogd/sysklogd.init
  688. para pequeos ejemplos. La conversin desde los ficheros *.init a scripts de
  689. inicio SysV es realizada usando m4 y el fichero de macros 'package/base/
  690. /sysvinit/init_macros.m4'.
  691. 5. Targets
  692. ==========
  693. POR REALIZAR
  694. 6. Arquitecturas
  695. ================
  696. POR REALIZAR