Rework discussion of untar and build.
This commit is contained in:
		
							parent
							
								
									d9558037d9
								
							
						
					
					
						commit
						6de4a36a46
					
				
					 1 changed files with 59 additions and 40 deletions
				
			
		|  | @ -402,56 +402,75 @@ require a very specific host system.   Even in this case, a | ||||||
| \hyperref[thinkpenguin-glibc-214-issue]{minor annoyance was found that more | \hyperref[thinkpenguin-glibc-214-issue]{minor annoyance was found that more | ||||||
|   detailed instructions would address}. |   detailed instructions would address}. | ||||||
| 
 | 
 | ||||||
| * The actual building of the source code was completed in the following way: | Anyway, since these instructions did not specify a specific host system, the | ||||||
| ** Since the instructions didn't mention a specific distro to use, we ran the | investigator simply used his own amd64 Debian 6 desktop system.  Before | ||||||
|    build on an amd64 Debian 6 machine we had.  The only distro requirement was: | beginning, the investigator used the following command: | ||||||
| 
 | 
 | ||||||
| To build your own firmware you need to have access to a GNU/Linux system | \lstset{tabsize=2} | ||||||
| (case-sensitive filesystem required). | \begin{lstlisting}[language=bash] | ||||||
|  |   $ dpkg --list | egrep '^iii' | less | ||||||
|  | \end{lstlisting} | ||||||
| 
 | 
 | ||||||
| ** The README mentioned that: | to verify that the required packages listed in the README were | ||||||
|  | installed\footnote{The \verb0dpkg0 command is a Debian-specific way of | ||||||
|  |   finding installed packages.}. | ||||||
| 
 | 
 | ||||||
| "In order to build firmware images for your router,the |  | ||||||
| following needs to be installed : |  | ||||||
| 
 | 
 | ||||||
| gcc, binutils, bzip2, flex, python, perl, make, find, | Next, the investigator then extracted the primary source package with the | ||||||
| grep, diff, unzip, gawk, getopt, libz-dev and libc headers." | following command: | ||||||
| 
 | 
 | ||||||
|    So we ran "dpkg --list" and confirmed that each package was installed (this | \lstset{tabsize=2} | ||||||
|    is indicated by a leading "ii" on the line containing the package).  Other | \begin{lstlisting}[language=bash] | ||||||
|    GNU/Linux distributions may have other ways of determing which packages are |   $ tar --posix -jxpf libCMC/librecmc-v1.2.1.tar.bz2 | ||||||
|    installed. | \end{lstlisting} | ||||||
| ** We then extracted the LibreCMC tarball by running |  | ||||||
|    "tar --posix -jxpf /media/libreCMC\verb0_0v1\verb0_02\verb0_01\verb0_0SRC/librecmc-v1.2.1.tar.bz2".  The |  | ||||||
|    CD did contain another tarball (librecmc-u-boot.tar.bz2), but there appeared |  | ||||||
|    to be separate instructions for that (in the u-boot\verb0_0reflash text file in the |  | ||||||
|    same directory).  Having the README be more explicit about this would be nice |  | ||||||
|    but did not ultimately prevent us from determing the proper steps to execute. |  | ||||||
| ** The README mentioned the following optional step, which we skipped because |  | ||||||
|    we did not need to modify the configuration for our initial build: |  | ||||||
| 
 | 
 | ||||||
| Please use "make menuconfig" to configure your appreciated | The investigator did notice an additional source release, entitled | ||||||
| configuration for the toolchain and firmware. Please note that | ``librecmc-u-boot.tar.bz2''.  The investigator concluded upon simple | ||||||
| the default configuration is what was used to build the firmware | inspection that the instructions found in ``u-boot\verb0_0reflash'' were | ||||||
| image for your router. It is advised that you use this configuration. | specific instructions for that part of the CCS\@.  This was a minor | ||||||
|  | annoyance, and ideally the ``README'' would list that fact, but the existing | ||||||
|  | layout met the reasonable standard that community-oriented GPL enforcers | ||||||
|  | typically apply, since the skilled investigator could determine the correct | ||||||
|  | course of action with a few moments of study. | ||||||
| 
 | 
 | ||||||
| ** The next instruction was 'Simply running "make" will build your firmware.' | The investigator then noted the additional step offered by the ``README'', | ||||||
|    So we entered the "librecmc" directory that had been created from the above | which read: | ||||||
|    "tar" command and then ran "make".  The build took about 40 minutes to run on | \begin{quotation} | ||||||
|    our system.  The command used and output from running it are available here: | Please use ``make menuconfig'' to configure your appreciated configuration | ||||||
|  | for the toolchain and firmware. Please note that the default configuration is | ||||||
|  | what was used to build the firmware image for your router. It is advised that | ||||||
|  | you use this configuration. | ||||||
|  | \end{quotation} | ||||||
| 
 | 
 | ||||||
|     enforcement-case-studies\verb0_0log-output/thinkpenguin\verb0_0librecmc-complete.log | This instruction actually goes above and beyond the requirements of GPL\@. | ||||||
|  | Specifically, the instruction guides users in their first step toward | ||||||
|  | exercising the freedom to modify the software.  While the GPL does contain | ||||||
|  | requirements that facility the freedom to modify (such as ensuring the CCS is | ||||||
|  | in the ``preferred form \hellip for making modifications to it'' form, it | ||||||
|  | does not require that you write specific instructions explaining how | ||||||
|  | modifications might be undertaken.  This instruction therefore exemplifies | ||||||
|  | the exceptional quality of this particular CCS\@. | ||||||
| 
 | 
 | ||||||
| % FIXME: Above, I'd like to see more ``walk through'' of the step by step | %FIXME: add a \hyperref to some ``preferred for for modification'' stuff above. | ||||||
| % instructions.  The text is a bit terse: could be expanded to talk more. |  | ||||||
| % FIXME(dg): Hopefully the above will suffice.  I can expand more/differently if |  | ||||||
| % such is desired. |  | ||||||
| 
 | 
 | ||||||
| * It was helpful to know that we could use "make menuconfig" for configuration | However, for purposes of the CCS verification process, typically the | ||||||
|   changes, as being able to modify the source is an important part of the GPL's | investigator avoids any unnecessary changes to the source code during the | ||||||
|   requirements.  Adding instructions like these shows that the distributor is | build process, lest the investigator err and cause the build to fail through | ||||||
|   aware of and interested in promoting the spirit of the GPL, by making it | his own modification, and thus incorrectly identify the CCS as inadequate. | ||||||
|   easier to modify the source than may be strictly required by the GPL's text. | Therefore, the investigator proceeded to simply run: | ||||||
|  | 
 | ||||||
|  | \lstset{tabsize=2} | ||||||
|  | \begin{lstlisting}[language=bash] | ||||||
|  |   $ cd libCMC | ||||||
|  |   $ make | ||||||
|  | \end{lstlisting} | ||||||
|  | 
 | ||||||
|  | and waited approximately 40 minutes for the build to complete\footnote{Build | ||||||
|  |   times will likely vary widely on various host systems}.  The investigator | ||||||
|  | kept a | ||||||
|  | \href{https://gitorious.org/copyleft-org/tutorial/source/master:enforcement-case-studies_log-output/thinkpenguin_librecmc-complete.log}{full | ||||||
|  |   log of the build}, which is not included herein due its size (approximately | ||||||
|  | 7.2K of text). | ||||||
| 
 | 
 | ||||||
| % FIXME: We should somewhere (perhaps on each step we discuss) talk about | % FIXME: We should somewhere (perhaps on each step we discuss) talk about | ||||||
| % what often goes wrong on those steps, and why this is right.  As written | % what often goes wrong on those steps, and why this is right.  As written | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Bradley M. Kuhn
						Bradley M. Kuhn