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 | ||||
|   detailed instructions would address}. | ||||
| 
 | ||||
| * The actual building of the source code was completed in the following way: | ||||
| ** Since the instructions didn't mention a specific distro to use, we ran the | ||||
|    build on an amd64 Debian 6 machine we had.  The only distro requirement was: | ||||
| Anyway, since these instructions did not specify a specific host system, the | ||||
| investigator simply used his own amd64 Debian 6 desktop system.  Before | ||||
| beginning, the investigator used the following command: | ||||
| 
 | ||||
| To build your own firmware you need to have access to a GNU/Linux system | ||||
| (case-sensitive filesystem required). | ||||
| \lstset{tabsize=2} | ||||
| \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, | ||||
| grep, diff, unzip, gawk, getopt, libz-dev and libc headers." | ||||
| Next, the investigator then extracted the primary source package with the | ||||
| following command: | ||||
| 
 | ||||
|    So we ran "dpkg --list" and confirmed that each package was installed (this | ||||
|    is indicated by a leading "ii" on the line containing the package).  Other | ||||
|    GNU/Linux distributions may have other ways of determing which packages are | ||||
|    installed. | ||||
| ** 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: | ||||
| \lstset{tabsize=2} | ||||
| \begin{lstlisting}[language=bash] | ||||
|   $ tar --posix -jxpf libCMC/librecmc-v1.2.1.tar.bz2 | ||||
| \end{lstlisting} | ||||
| 
 | ||||
| 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. | ||||
| The investigator did notice an additional source release, entitled | ||||
| ``librecmc-u-boot.tar.bz2''.  The investigator concluded upon simple | ||||
| inspection that the instructions found in ``u-boot\verb0_0reflash'' were | ||||
| 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.' | ||||
|    So we entered the "librecmc" directory that had been created from the above | ||||
|    "tar" command and then ran "make".  The build took about 40 minutes to run on | ||||
|    our system.  The command used and output from running it are available here: | ||||
| The investigator then noted the additional step offered by the ``README'', | ||||
| which read: | ||||
| \begin{quotation} | ||||
| 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 | ||||
| % 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. | ||||
| %FIXME: add a \hyperref to some ``preferred for for modification'' stuff above. | ||||
| 
 | ||||
| * It was helpful to know that we could use "make menuconfig" for configuration | ||||
|   changes, as being able to modify the source is an important part of the GPL's | ||||
|   requirements.  Adding instructions like these shows that the distributor is | ||||
|   aware of and interested in promoting the spirit of the GPL, by making it | ||||
|   easier to modify the source than may be strictly required by the GPL's text. | ||||
| However, for purposes of the CCS verification process, typically the | ||||
| investigator avoids any unnecessary changes to the source code during the | ||||
| build process, lest the investigator err and cause the build to fail through | ||||
| his own modification, and thus incorrectly identify the CCS as inadequate. | ||||
| 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 | ||||
| % 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