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.

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