From 6995184d66fc75394861b75e8b8d2c6fbda2d74f Mon Sep 17 00:00:00 2001 From: rudson Date: Mon, 21 Jan 2008 23:26:06 +0000 Subject: git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@484 04377dda-e619-0410-9926-eae83683ac58 --- trunk/doc/CHANGELOG | 13 +++ trunk/doc/mkbuild-pt_BR.tex | 200 +++++++++++++++++++++++++++++++++++++++----- 2 files changed, 191 insertions(+), 22 deletions(-) (limited to 'trunk/doc') diff --git a/trunk/doc/CHANGELOG b/trunk/doc/CHANGELOG index 627b9c1..7bd5bc9 100644 --- a/trunk/doc/CHANGELOG +++ b/trunk/doc/CHANGELOG @@ -1,6 +1,19 @@ simplepkg changelog =================== + +0.6pre17 +======== + + - mkpatch add simple patch suport to mkbuild + - mkpatch 1.1: + - --help, -h option suport + - change select line: 'sed "#i g;d"' is 30% most fast that 'sed -n "#i p"' + - change 'while' loop to most speed in patch application + - bug fixe: replace 'return' for 'exit' command + - mkbuild-1.2.0: + - added suport to mkpatch section in .mkbuild (apply_mkpatch function) + 0.6pre14 ======== diff --git a/trunk/doc/mkbuild-pt_BR.tex b/trunk/doc/mkbuild-pt_BR.tex index d0516d6..33de6fc 100644 --- a/trunk/doc/mkbuild-pt_BR.tex +++ b/trunk/doc/mkbuild-pt_BR.tex @@ -35,7 +35,7 @@ \title{Construindo SlackBuilds com mkbuild} -\author{Rudson Alves} +\author{Rudson Alves\\v. 1.2} \date{\today} @@ -62,7 +62,7 @@ O \textit{mkbuild} utiliza o modelo padr /etc/simplepkg/defaults/mkbuild/ \end{verbatim} -Este modelo é uma versão setorizada do \textit{generic.SlackBuild}, levemente modificada. O \textit{generic.SlackBuild} é um modelo genérico de \textit{Slackbuilds} disponibilizado na árvore de \textit{Slackbuilds} do \textit{Slack.Sarava}, para servir como modelo para a construção dos \textit{scripts}. Outros modelos setorizados podem ser utilizados pelo \textit{mkbuild}, a única limitação é quanto ao nome da seção \textit{slackdesc}, que não poderá ser alterada. +Este modelo é uma versão setorizada do \textit{generic.SlackBuild}, levemente modificada. O \textit{generic.SlackBuild} é um modelo genérico de \textit{Slackbuilds} criado por nosso colega e colaborador Luis, para servir como modelo para a construção dos \textit{Slackbuilds}. Outros modelos setorizados podem ser utilizados pelo \textit{mkbuild}, a única limitação é quanto ao nome da seção \textit{slackdesc}, que não poderá ser alterada. \subsection{Os Campos} @@ -122,7 +122,7 @@ REST OF DOINST.SH & conte \end{tabular} \\\\ -Em alguns casos o nome do pacote difere do nome da fonte, como é o caso da fonte \textit{sigc++}, que gera o pacote de nome \textit{libsiggc++}. Por este motivo que existem os campos \textit{SOURCE NAME} e \textit{PACKAGE NAME}. Para uma compreensão mais profunda destes campos, aconselho fazer uma análise mais rofunda do \textit{script} \textit{generic.SlackBuild}. +Em alguns casos o nome do pacote difere do nome da fonte, como é o caso da fonte \textit{sigc++}, que gera o pacote de nome \textit{libsiggc++}. Por este motivo que existem os campos \textit{SOURCE NAME} e \textit{PACKAGE NAME}. Para uma compreensão mais profunda destes campos, aconselho fazer uma análise mais detalhada do modelo \textit{generic.mkSlackBuild}. \subsection{As Seções} @@ -174,15 +174,23 @@ clean\_builds & remove fontes e instala \end{tabular} \\\\ -A terceira e a quarta colunas da tebela acima apresentam o status padrão para as seções nas versões 1.0.x e 1.1.x do \textit{mkbuild}. No \textit{mkbuild} versão 1.0.x, as seções \textbf{all} são configuradas no modelo \textit{generic.mkSlackBuild}. A partir da versão 1.1.x estas seções serão definidas como \textbf{on} ou \textbf{all} no \textit{model.mkbuild}, não mais no \textit{generic.mkSlackBuild}. +A terceira e a quarta colunas da tebela acima apresentam o status padrão para as seções nas versões 1.0.x e 1.1.x do \textit{mkbuild}. No \textit{mkbuild} versão 1.0.x, as seções \textbf{all} são configuradas no modelo \textit{generic.mkSlackBuild}. A partir da versão 1.1.x estas seções serão definidas como \textbf{on} ou \textbf{off} no \textit{model.mkbuild}, não mais no modelo \textit{generic.mkSlackBuild}. \section{Configuração} -Por hora, o \textit{mkbuild} utiliza apenas um variável de configuração em /etc/simplepkg/simplepkg.conf. A variável \textit{SLACKBUILDS\_DIR} é necessária para utilizar o \textit{mkbuild} com a opção "\verb!-c!" ou "\verb!--commit!", que incorpora os arquivos \textit{SlackBuild} e \textit{slack-required} à estrutura de diretórios do \textit{Slack.Sarava}, na cópia local. +O \textit{mkbuild} utiliza quatro variáveis de configuração em /etc/simplepkg/simplepkg.conf. São elas: +\begin{description} + \item[SLACKBUILDS\_DIR] diretório onde serão guardados os \textit{SlackBuilds} e \textit{slack-required} gerados. Necessário para o uso com a opção \textbf{-c}, \textit{commit}. Padrão /var/simplaret/slackbuilds; + \item[MKBUILDS\_DIR] diretório onde serão guardados os \textit{.mkbuilds} criados. Necessário para o uso com a opção \textbf{-c}, \textit{commit}. Padrão /var/simplaret/mkbuilds; + \item[SLACKBUILDS\_SVN] endereço do repositório subversion dos \textit{SlackBuilds}. Mantenha o valor padrão; + \item[MKBUILDS\_SVN] endereço do repositório subversion dos \textit{SlackBuilds}. Mantenha o valor padrão; + \item[COLOR_MODE] define modo de cores para o \textit{mkbuild} e \textit{createpkg}. Padrão \textit{none}, preto e branco. + \end{description} -\section{Criando o SlackBuild de um aplicativo} + +\section{Criando o SlackBuild do aplicativo pyrex} Para fazer um \textit{SlackBuild} com o \textit{mkbuild} é necessário criar um arquivo com os parâmetros que deseja que sejam passados para o modelo. Um arquivo de configuração simples, \textit{sample-Pyrex-small.mkbuild}, é apresentado abaixo: @@ -265,13 +273,13 @@ Embora existam muitos par O mkbuild remove o nome do pacote, versão, assinatura do autor e várias outras informações destes dados, seguindo alguns critérios descritos a seguir. -A sintaxe para a passagem de parâmetros ao \textit{mkbuild} é +A sintaxe para a passagem de parâmetros ao \textit{mkbuild} pelo arquivo de parâmetros \textit{.mkbuild} é \begin{verbatim} [[DESCRIÇÃO DO PARÂMETRO]]="Parâmetro entre aspas duplas" \end{verbatim} -As aspas duplas podem ser omitidas\footnote{Nas versões inferiores a 0.9.9, do \textit{mkbuild}, o aspas duplo é o delimitador e por isto é obrigatório. Um parâmetro passado sem o aspas duplo será interpretado como um parâmetro vazio, nestas versões.}. O delimitador utilizado pelo \textit{mkbuild} é o primeiro caracter igual (=) a aparecer na linha. Qualquer outra ocorrência de caracter igual será lido como parte do parâmetro. O mesmo acontece com comentários colocados após o caracter igual. Por exemplo, na linha abaixo: +As aspas duplas podem ser omitidas\footnote{Nas versões inferiores a 0.9.9, do \textit{mkbuild}, a aspas dupla é o delimitador e por isto é obrigatório. Um parâmetro passado sem o aspas duplo será interpretado como um parâmetro vazio, nestas versões.}. O delimitador utilizado pelo \textit{mkbuild} é o primeiro caracter igual (=) a aparecer na linha e o fim de linha. Qualquer outra ocorrência de caracter igual será lido como parte do parâmetro. O mesmo acontece com comentários colocados após o caracter igual. Por exemplo, na linha abaixo: \begin{verbatim} [[PARÂMETRO TEST]]=Este parâmetro é um teste # Este comentário será lido. @@ -550,9 +558,9 @@ off: postinstall_script No caso do exemplo acima, são desabilitadas as seções: \textit{md5sum\_download\_and\_check\_0}, \textit{md5sum\_download\_and\_check\_1}, \textit{gpg\_signature\_check}, \textit{patch\_source}, \textit{compress\_manpages}, \textit{compress\_info\_files} e \textit{postinstall\_script}. Linhas iniciadas por uma tralha, \#, são ignoradas. Como no modelo generic.mkSlackBuild todas as seções estão desabilitadas ("off"), apenas as seções ligadas necessitam ser habilitadas. -\subsubsection{Substituição de seções do modelo} +\subsection{Substituição de seções no modelo} -Em algumas situações pode ser necessário substituir o conteúdo de uma seção. Estas mudanças nas seções são feitas por iniciar uma seção, no arquivo de parâmetros, por "\verb!#>nome_da_seção!" e terminar por "\verb!#nome_da_seção!" e terminar pela \textit{tag} "\verb!#untar_source @@ -590,19 +598,149 @@ pyrex: Para esta seção, o \textit{mkbuild} irá substituir o parâmetro \textit{[[SLACK-DESC]]} pelo conteúdo definido entre "\verb!#>slackdesc!" e "\verb!#>" -ai "<>" -n dosbox +\end{verbatim} + +Não é necessário o nome e assinatura passados pelas opções \textbf{-a} e \textbf{-ai}, mas é aconselhável. A opção \textbf{-n} diz ao \textit{mkbuild} para copiar o modelo em \textit{/etc/simplepkg/\dots/model.mkbuild}, para o diretório atual com o nome \textit{dosbox.mkbuild}, e aplicar o nome "dosbox" a este modelo. + +Em seguida, edite o arquivo \textit{dosbox.mkbuild}, com um editor de sua escolha, e preencha os campos com os valores abaixo: + +\begin{verbatim} +[[DOWNLOAD FOLDER URL]]="http://downloads.sourceforge.net/dosbox/dosbox-0.71.tar.gz" +[[SLACKBUILD PATH]]="games/emulation/dosbox" + +#>slackdesc +dosbox: DOSBox.slackBuild by Slack.Sarava +dosbox: +dosbox: DOSBox is a DOS-emulator that uses the SDL-library which makes DOSBox +dosbox: very easy to port to different platforms. DOSBox has already been +dosbox: ported to many different platforms, such as Windows, BeOS, Linux, +dosbox: MacOS X... +dosbox: +dosbox: DOSBox also emulates CPU:286/386 realmode/protected mode, Directory +dosbox: FileSystem/XMS/EMS, Tandy/Hercules/CGA/EGA/VGA/VESA graphics, a +dosbox: SoundBlaster/Gravis Ultra Sound card for excellent sound +dosbox: compatibility with older games... +#! e \verb!#p +... Alterações ... +#p< +... +\end{verbatim} + +As linhas com as alterações devem sempre iniciar com um \textit{caracter de controle}, seguido pelo conteúdo da linha a ser alterada, removida ou conferida ao modelo \textit{generic.mkSlackBuild}. O formato do \textit{patch} usado pelo \textit{mkbuild} segue o mesmo padrão gerado pelo comando \verb!diff -u!, com as seguintes diferenças: + +\begin{enumerate} + \item Não possui numeração de linhas. A posição das alterações é referenciada por uma ou mais linhas de referência. Uma linha de referência deve ser única, ou em caso de várias linhas, a seqüência deve ser única; + \item O número de linhas de referência é variável e não necessita de linhas de referência ao final da alteração; + \item O caracter para separar as alterações é o caracter igual, =. +\end{enumerate} + + +\subsection{Caracteres de controle} + +Os \textit{caracteres de controle} são apenas quatro. Com eles é possível fazer todas as alterações por substituição de linha necessárias em um \textit{patch}. Segue abaixo a descrição destes caracteres de controle: + +\begin{description} + \item[" " (espaço)] este caracter de controle serve para definir linhas de referência, necessárias para localizar a posição das alterações no modelo \textit{generic.mkSlackBuild}; + \item[- (menos)] serve para referenciar linhas que serão removidas do modelo. Este caracter de controle serve ainda para definir linhas de referência, entretanto lembre-se que elas serão removidas; + \item[+ (mais)] serve para indicar linhas que serão adicionadas ao modelo, logo após a referência; + \item[= (igual)] serve para indicar o final de uma alteração e iniciar a próxima. Qualquer coisa colocado após um \textit{caracter de controle} igual, será ignorado. + \end{description} + +Para simplificar a compreensão do funcionamento deste \textit{patch} simplificado, segue abaixo um exemplo para alterações hipotéticas. + + +\subsection{mkpatch: Alterando uma linha} + +Neste exemplo, será alterado o conteúdo da variável \textit{ARCH} para fixá-la em \textit{i586}. Isto pode ocorre na construção de pacotes de programas pré-compilados ou um pacote binário. Para fazer esta alteração, basta acrescentar o \textit{patch} abaixo ao final do arquivo \textit{.mkbuild}: + +\begin{verbatim} +... +#p> + PKG_NAME="[[PACKAGE NAME]]" +-ARCH=${ARCH:=[[ARCH]]} ++ARCH=i586 +#p< +\end{verbatim} + +A primeira linha, \verb!PKG_NAME="[[PACKAGE NAME]]"!, iniciada pelo \textit{caracter de controle} \textbf{espaço}, é uma linha de referência a ser procurada no modelo \textit{generic.mkSlackBuild}, posicionando a alteração ao modelo. A segunda linha, com o \textit{caracter de controle} \textbf{menos}, indica a linha que será removida: \verb!ARCH=${ARCH:=[[ARCH]]}"!. A terceira linha, com o \textit{caracter de controle} \textbf{mais}, será adicionada logo em seguida: \verb!ARCH=i586!. + +Observe que o mesmo poderia ser feito com o \textit{patch} abaixo: + +\begin{verbatim} +... +#p> +-ARCH=${ARCH:=[[ARCH]]} ++ARCH=i586 +#p< +\end{verbatim} + +Como o \textit{caracter de controle} \textbf{menos} também serve como referência e a alteração será feita da mesma forma. + + +\subsection{mkpatch: Aplicando uma segunda alteração} + +Para uma segunda alteração ao modelo, vou alterar a forma de instalação e fazer mais algumas edições a seção \textit{strip_binaries}: + +\begin{verbatim} +#p> +-ARCH=${ARCH:=[[ARCH]]} ++ARCH=i586 +=== + off +-# Install ++# Install Setup +-make install DESTDIR="$PKG" || exit $ERROR_INSTALL +-./setup --prefix="$PKG" || exit $ERROR_INSTALL +=== + # Strip binaries + ( cd "$PKG" +- find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \ +- xargs strip --strip-unneeded 2> /dev/null +- find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \ +- xargs strip --strip-unneeded 2> /dev/null ++ find . | xargs file | grep ELF | xargs strip --strip-unneeded 2> /dev/null +#p< +\end{verbatim} + +A segunda alteração, troca a linha de comentário adicionado a palavra \verb!Setup! e por fim o comando de instalação, para a chamada \verb!./setup! \dots + +A terceira alteração é feita à seção \textit{strip_binaries}, onde os dois comando \verb!find! são trocados por um terceiro mais simples. -Para simplificar a construção dos \textit{SlackBuilds} é aconselhável editar o arquivo \verb!/etc/simplepkg/defaults/mkbuild/model.mkbuild! e adicionar algumas declarações padrões como: -\begin{itemize} -\item \textit{SLACKBUILD AUTHOR} - com o seu nome -\item \textit{SLACKBUILD AUTHOR INITIALS} - a assinatura dos pacotes -\item \textit{SLACKBUILD MODEL} - caso o modelo utilizado difira do modelo padrão -\item \textit{NUMBER OF JOBS} - com o valor desejado -\item \dots -\end{itemize} +\section{Apêndice-A} -Vários destes parâmetros também podem ser passados ao \textit{mkbuild} pela linha de comando. Um manual completo destas opções pode ser consultado passando flag \verb!-h!, ao \textit{mkbuild}: +Vários outros parâmetros podem ser passados ao \textit{mkbuild} pela linha de comando. Um manual completo destas opções pode ser consultado passando \textit{flag} \verb!--help! ou \verb!-h!, ao \textit{mkbuild}: \begin{verbatim} NAME @@ -619,6 +757,8 @@ DESCRIPTION author name -ai, --author_initials author signature + -bn, --build-number + change build number -cs, --const_string construction string to source name -u, --url @@ -635,20 +775,36 @@ DESCRIPTION Number of jobs to run simultaneously --prefix Prefix install directory + -pf, --patch-files + List of patch files + -npss, --nps-strip + Number of prefix slashes to strip Program options: -h, --help this help mesage - -c, --commit - commit SlackBuilds in local svn tree + -cs, --commit-slackbuild + commit SlackBuilds in local svn SlackBuild tree + -cm, --commit-mkbuild + commit .mkbuild in local svn mkbuild tree + -c, --commit-all + commit SlackBuild and .mkbuild files in local svn tree -n, --new start a new mkbuild configure file -v, --version program version -V, --verbose print debug information + -sp, --slackbuild-path + print SlackBuild path in Slack.Sarava tree EXAMPLES + mkbuild -c pyrex.mkbuild + build pyrex.SlackBuild and commit .mkbuild and .SlackBuild in + Slack.Sarava local tree. + mkbuild -a "Jose Araujo" -ai "ja" -n pyrex + make a basic pyrex.mkbuild with author name "Jose Araujo" and + author signature "ja". mkbuild --prefix /usr/local pyrex.mkbuild build pyrex.SlackBuild with prefix /usr/local and pyrex.mkbuild variables and options definitions. -- cgit v1.2.3