Reduce slides to only those introducing violations
This commit is contained in:
		
							parent
							
								
									ed0b045c26
								
							
						
					
					
						commit
						82d46f8782
					
				
					 1 changed files with 2 additions and 641 deletions
				
			
		|  | @ -1,337 +1,7 @@ | ||||||
| % A Practical Guide to Compliance with the GNU GPL | % The What and How of GPL Violations | ||||||
| % Bradley M. Kuhn and Karen M. Sandler | % Bradley M. Kuhn | ||||||
| % Thursday  19 January 2016 | % Thursday  19 January 2016 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| # Audience |  | ||||||
| 
 |  | ||||||
| + Our goal here is to move faster or slower based on audience knowledge. |  | ||||||
| 
 |  | ||||||
| + There are folks in this audience who have worked with this stuff for years, |  | ||||||
|   and those who are completely new. |  | ||||||
| 
 |  | ||||||
| + We want these presentations to be valuable to all of you. |  | ||||||
| 
 |  | ||||||
| # Audience |  | ||||||
| 
 |  | ||||||
| + Please, don't be embarrassed: |  | ||||||
|      + Ever GPL expert in the world, including us, started as a student who |  | ||||||
|        knew none of this. |  | ||||||
| 
 |  | ||||||
| + This is a course; raise your hand if you are confused or have a question. |  | ||||||
| 
 |  | ||||||
| + We are glad to go "off-slides" and get your questions answered. |  | ||||||
| 
 |  | ||||||
| # The Tutorial's Textbook |  | ||||||
| 
 |  | ||||||
| + This tutorial actually has a 125-page textbook. |  | ||||||
| 
 |  | ||||||
| + You can download it (PDF or online HTML browse, or the source code!) from |  | ||||||
|   [copyleft.org/guide](https://copyleft.org/guide) |  | ||||||
| 
 |  | ||||||
| + The text is in integration and culmination of every freely licensed |  | ||||||
|   material on copyleft (and GPL in particular) we could find. |  | ||||||
| 
 |  | ||||||
| + We don't mind if you read the text while we talk and raise your hand with questions. |  | ||||||
| 
 |  | ||||||
| # How this Tutorial Go? |  | ||||||
| 
 |  | ||||||
| + Materials presented will mix the simple & complex. |  | ||||||
| 
 |  | ||||||
| + We cannot possibly cover the entire GPL and compliance procedures in merely |  | ||||||
|   two hours. |  | ||||||
|     + a full course could take a whole day or more. |  | ||||||
|     + but we'll give you the key highlights. |  | ||||||
| 
 |  | ||||||
| # Outline |  | ||||||
| 
 |  | ||||||
| + Discuss: motivations, origins, then a few of GPL's sections. |  | ||||||
| 
 |  | ||||||
| + Turn to focus to how it relates to meeting the requirements of the license |  | ||||||
|   (aka compliance). |  | ||||||
| 
 |  | ||||||
| + If you haven't asked enough questions at that point, we'll then still have |  | ||||||
|   lots of time at the end to take questions and answer them. |  | ||||||
| 
 |  | ||||||
| # Why Listen To Us? |  | ||||||
| 
 |  | ||||||
| + Conservancy operates and practices license compliance activities extremely transparently. |  | ||||||
| 
 |  | ||||||
| + So you have access to drafters, interpreters, enforcers. |  | ||||||
| 
 |  | ||||||
| + Someday, we may (or already have) sit across the table from you. |  | ||||||
| 
 |  | ||||||
| + Our transparency does make your job easier.  |  | ||||||
| 
 |  | ||||||
| # The Mindset of GPL |  | ||||||
| 
 |  | ||||||
| + GPL protects software freedom. |  | ||||||
| 
 |  | ||||||
| + Ultimate goal: make sure every user has the four freedoms. |  | ||||||
|      + Freedom to run the software. |  | ||||||
|      + Freedom to study and modify the software. |  | ||||||
|      + Freedom to share the software. |  | ||||||
|      + Freedom to distribute modified versions. |  | ||||||
| 
 |  | ||||||
| + Every clause in GPL was designed to uphold one of these freedoms. |  | ||||||
|      + Or, it's a compromise of drafting in adoption vs. freedom debate. |  | ||||||
| 
 |  | ||||||
| # Using Copyright |  | ||||||
| 
 |  | ||||||
| + GPL is primarily a copyright license. |  | ||||||
|       + Software is copyrighted. |  | ||||||
|       + License grants key freedoms. |  | ||||||
|       + Requirement prohibit activities that take away freedoms. |  | ||||||
| 
 |  | ||||||
| + General concept: copyleft. |  | ||||||
| 
 |  | ||||||
| + Specific implementation: GPL. |  | ||||||
| 
 |  | ||||||
| # Conditional Permissions |  | ||||||
| 
 |  | ||||||
| + A copyleft license grants copyright permissions, conditionally. |  | ||||||
| 
 |  | ||||||
| + Think of the phrase: “provided that” |  | ||||||
| 
 |  | ||||||
| + “provided that”: appears (in some form) only |  | ||||||
|     + 4 times in GPLv2 |  | ||||||
|     + 9 times in GPLv3. |  | ||||||
| 
 |  | ||||||
| # Compare To Proprietary Licenses |  | ||||||
| 
 |  | ||||||
| + Yes, the GPL has its requirements. |  | ||||||
| 
 |  | ||||||
| + But *none* of these activities are ever permitted under proprietary |  | ||||||
|   licenses. |  | ||||||
| 
 |  | ||||||
| + If you don't like what the GPL requires you to do, then just use |  | ||||||
|   proprietary software instead. |  | ||||||
| 
 |  | ||||||
| + That way, you know the answer to every “Am I allowed to?” question is “no” |  | ||||||
| 
 |  | ||||||
| + rather than: “yes, but only as long as you …” |  | ||||||
| 
 |  | ||||||
| + Many business advantages to copyleft... |  | ||||||
| 
 |  | ||||||
| # The Technical Gap |  | ||||||
| 
 |  | ||||||
| + Understanding GPL well requires a some software expertise & legal |  | ||||||
|   expertise. |  | ||||||
| 
 |  | ||||||
| + You don't have to be a professional on either side to grok it. |  | ||||||
|      + but you're best off if you're a professional in one & an amateur |  | ||||||
|        in the other.  |  | ||||||
| 
 |  | ||||||
| + Most important technical concepts you need: |  | ||||||
|      + source code, binaries, methods of distribution. |  | ||||||
| 
 |  | ||||||
| # Modification As a Center Provision |  | ||||||
| 
 |  | ||||||
| + GPL's primary copyright hook is copyright controls on the right to modify. |  | ||||||
| 
 |  | ||||||
| + GPL's central tenant: |  | ||||||
| 
 |  | ||||||
| + You can make a modified version of various types privately as much as you'd like. |  | ||||||
| 
 |  | ||||||
| + When you distribute that modified version, you have requirements to meet. |  | ||||||
| 
 |  | ||||||
| + Technological considerations dictate necessity of more complex rules for |  | ||||||
| certain types of modifications. |  | ||||||
| 
 |  | ||||||
| # GPLv2 § 2(a-b) |  | ||||||
| 
 |  | ||||||
| <span class="fitonslide"> |  | ||||||
| <p>[GPLv2§]2. You may modify your copy or copies of the Program or any |  | ||||||
| portion of it, thus forming a work based on the Program, and copy and |  | ||||||
| distribute such modifications or work under the terms of Section 1 above, |  | ||||||
| provided that you also meet all of these conditions: |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| a) You must cause the modified files to carry prominent notices stating |  | ||||||
| that you changed the files and the date of any change. |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| b) You must cause any work that you distribute or publish, that in |  | ||||||
| whole or in part contains or is derived from the Program or any |  | ||||||
| part thereof, to be licensed as a whole at no charge to all third |  | ||||||
| parties under the terms of this License. |  | ||||||
| </p> |  | ||||||
| </span> |  | ||||||
| 
 |  | ||||||
| # GPLv3§5(a-c) |  | ||||||
| 
 |  | ||||||
| <span class="fitonslide"> |  | ||||||
| <p> |  | ||||||
| You may convey a work based on the Program, or the modifications to |  | ||||||
| produce it from the Program, in the form of source code under the |  | ||||||
| terms of section 4, provided that you also meet all of these conditions: |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| a) The work must carry prominent notices stating that you modified it, and |  | ||||||
| giving a relevant date. |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| b) The work must carry prominent notices stating that it is released under |  | ||||||
| this License and any conditions added under section 7.  This requirement |  | ||||||
| modifies the requirement in section 4 to "keep intact all notices". |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| c) You must license the entire work, as a whole, under this License to anyone |  | ||||||
| who comes into possession of a copy.  This License will therefore apply, |  | ||||||
| along with any applicable section 7 additional terms, to the whole of the |  | ||||||
| work, and all its parts, regardless of how they are packaged.  This License |  | ||||||
| gives no permission to license the work in any other way, but it does not |  | ||||||
| invalidate such permission if you have separately received it. |  | ||||||
| </p> |  | ||||||
| </span> |  | ||||||
| 
 |  | ||||||
| # GPLv2§2¶ penultimates |  | ||||||
| 
 |  | ||||||
| <span class="fitonslide"> |  | ||||||
| <p> |  | ||||||
| These requirements apply to the modified work as a whole.  If |  | ||||||
| identifiable sections of that work are not derived from the Program, |  | ||||||
| and can be reasonably considered independent and separate works in |  | ||||||
| themselves, then this License, and its terms, do not apply to those |  | ||||||
| sections when you distribute them as separate works.  But when you |  | ||||||
| distribute the same sections as part of a whole which is a work based |  | ||||||
| on the Program, the distribution of the whole must be on the terms of |  | ||||||
| this License, whose permissions for other licensees extend to the |  | ||||||
| entire whole, and thus to each and every part regardless of who wrote it. |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| Thus, it is not the intent of this section to claim rights or contest |  | ||||||
| your rights to work written entirely by you; rather, the intent is to |  | ||||||
| exercise the right to control the distribution of derivative or |  | ||||||
| collective works based on the Program. |  | ||||||
| </p> |  | ||||||
| 
 |  | ||||||
| </span> |  | ||||||
| 
 |  | ||||||
| # GPLv3 §0 ¶1-5 |  | ||||||
| <span class="fitonslide"> |  | ||||||
| <p> |  | ||||||
|   "Copyright" also means copyright-like laws that apply to other kinds of |  | ||||||
| works, such as semiconductor masks. |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
|   "The Program" refers to any copyrightable work licensed under this |  | ||||||
| License.  Each licensee is addressed as "you".  "Licensees" and |  | ||||||
| "recipients" may be individuals or organizations. |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| To "modify" a work means to copy from or adapt all or part of the work |  | ||||||
| in a fashion requiring copyright permission, other than the making of an |  | ||||||
| exact copy.  The resulting work is called a "modified version" of the |  | ||||||
| earlier work or a work "based on" the earlier work. |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
|   A "covered work" means either the unmodified Program or a work based |  | ||||||
| on the Program. |  | ||||||
| </p> |  | ||||||
| 
 |  | ||||||
| # Binaries (Object Code) are Modifications |  | ||||||
| 
 |  | ||||||
| + Software that the computer understands is different than software humans |  | ||||||
|   read. |  | ||||||
| 
 |  | ||||||
| + There is often a process required to modify (and/or translate) the software |  | ||||||
|   from human-readable |  | ||||||
|       + This process can be done ahead of time. |  | ||||||
| 
 |  | ||||||
| + Separation of source and binary was the first way proprietary software |  | ||||||
|   companies discovered to subjugate users. |  | ||||||
|       + GPL uses the fact that binaries are modifications (which are often |  | ||||||
|         distribution) to prevent that subjugation. |  | ||||||
| 
 |  | ||||||
| # GPLv2 § 3(a-b) |  | ||||||
| 
 |  | ||||||
| <span class="fitonslide"> |  | ||||||
| <p> |  | ||||||
| <p>[GPLv2§]3. You may copy and distribute the Program (or a work based on it, |  | ||||||
| under Section 2) in object code or executable form under the terms of |  | ||||||
| Sections 1 and 2 above provided that you also do one of the following: |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| a) Accompany it with the complete corresponding machine-readable |  | ||||||
| source code, which must be distributed under the terms of Sections |  | ||||||
| 1 and 2 above on a medium customarily used for software interchange; or, |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| b) Accompany it with a written offer, valid for at least three |  | ||||||
| years, to give any third party, for a charge no more than your |  | ||||||
| cost of physically performing source distribution, a complete |  | ||||||
| machine-readable copy of the corresponding source code, to be |  | ||||||
| distributed under the terms of Sections 1 and 2 above on a medium |  | ||||||
| customarily used for software interchange; |  | ||||||
| </p> |  | ||||||
| </span> |  | ||||||
| 
 |  | ||||||
| # GPLv3 § 6(a-b) |  | ||||||
| 
 |  | ||||||
| <span class="fitonslide"> |  | ||||||
| <p> |  | ||||||
| [GPLv3 § ] 6. Conveying Non-Source Forms. |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| You may convey a covered work in object code form under the terms |  | ||||||
| of sections 4 and 5, provided that you also convey the |  | ||||||
| machine-readable Corresponding Source under the terms of this License, |  | ||||||
| in one of these ways: |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| a) Convey the object code in, or embodied in, a physical product |  | ||||||
| (including a physical distribution medium), accompanied by the |  | ||||||
| Corresponding Source fixed on a durable physical medium |  | ||||||
| customarily used for software interchange. |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| b) Convey the object code in, or embodied in, a physical product |  | ||||||
| (including a physical distribution medium), accompanied by a |  | ||||||
| written offer, valid for at least three years and valid for as |  | ||||||
| long as you offer spare parts or customer support for that product |  | ||||||
| model, to give anyone who possesses the object code either (1) a |  | ||||||
| copy of the Corresponding Source for all the software in the |  | ||||||
| product that is covered by this License, on a durable physical |  | ||||||
| medium customarily used for software interchange, for a price no |  | ||||||
| more than your reasonable cost of physically performing this |  | ||||||
| conveying of source, or (2) access to copy the |  | ||||||
| Corresponding Source from a network server at no charge. |  | ||||||
| </p> |  | ||||||
| </span> |  | ||||||
| 
 |  | ||||||
| # GPLv3 § 1 ¶ 1, 4-6 |  | ||||||
| 
 |  | ||||||
| <span class="fitonslide"> |  | ||||||
| <p> |  | ||||||
| The "source code" for a work means the preferred form of the work |  | ||||||
| for making modifications to it.  "Object code" means any non-source |  | ||||||
| form of a work. |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| The "Corresponding Source" for a work in object code form means all the |  | ||||||
| source code needed to generate, install, and (for an executable work) run the |  | ||||||
| object code and to modify the work, including scripts to control those |  | ||||||
| activities.  However, it does not include the work's System Libraries, or |  | ||||||
| general-purpose tools or generally available free programs which are used |  | ||||||
| unmodified in performing those activities but which are not part of the work. |  | ||||||
| For example, Corresponding Source includes interface definition files |  | ||||||
| associated with source files for the work, and the source code for shared |  | ||||||
| libraries and dynamically linked subprograms that the work is specifically |  | ||||||
| designed to require, such as by intimate data communication or control flow |  | ||||||
| between those subprograms and other parts of the work. |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| The Corresponding Source need not include anything that users |  | ||||||
| can regenerate automatically from other parts of the Corresponding |  | ||||||
| Source. |  | ||||||
| <br/> |  | ||||||
| <br/> |  | ||||||
| The Corresponding Source for a work in source code form is that |  | ||||||
| same work. |  | ||||||
| </p> |  | ||||||
| </span> |  | ||||||
| 
 |  | ||||||
| # What's a GPL Violation? | # What's a GPL Violation? | ||||||
| 
 | 
 | ||||||
| + GPL (both v2 and v3) require: | + GPL (both v2 and v3) require: | ||||||
|  | @ -447,319 +117,10 @@ same work. | ||||||
| + The worst I've ever experienced is 22 rounds. | + The worst I've ever experienced is 22 rounds. | ||||||
| 
 | 
 | ||||||
| + We send detailed reports. | + We send detailed reports. | ||||||
| 
 |  | ||||||
| # No Build Instructions |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
|     The primary issues we found were a dearth of build instructions as well  |  | ||||||
|     as a complete lack of installation instructions.  There was no  |  | ||||||
|     information that mentioned how one might build each package so we had to  |  | ||||||
|     guess about which Makefile and/or build script to run for each package. |  | ||||||
|     And in many cases it was not possible or straight-forward to build - this |  | ||||||
|     must be resolved in the next source candidate. |  | ||||||
| 
 |  | ||||||
| # Making General Recommendations |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
|     We generally recommend that the source release be a single file (ie. one |  | ||||||
|     tarball containing all packages required for the build) that includes a |  | ||||||
|     README or similar in the main directory explaining exactly how to build |  | ||||||
|     and install all of the packages.  See section 21.2 of |  | ||||||
|     http://compliance.guide/pristine-example for an excellent example. |  | ||||||
| 
 |  | ||||||
| # Suspicious, But Not Captious. |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
|     Also, we noticed that some packages mentioned in the "OPEN SOURCE |  | ||||||
|     SOFTWARE NOTICE" included with the device (and also downloaded as part of |  | ||||||
|     the source release; see |  | ||||||
|     Open_Source_Software_Notice_and_Privacy_Policy.pdf ) could not be found |  | ||||||
|     in the source release.  For example, we found "Software: Samba 3.0.XX" in |  | ||||||
|     the notice, but could not find any trace of Samba in the source release. |  | ||||||
|     Please ensure that all the software included in the notice is included in |  | ||||||
|     the source release as well. |  | ||||||
| 
 |  | ||||||
| # Nesting Doll Packages |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
| 
 |  | ||||||
|     Once extracted, the 3 .rar files above produce the following output  |  | ||||||
|     files: |  | ||||||
|          * busybox-1.21.1.rar |  | ||||||
|          * AB_A0101.123.tar.gz |  | ||||||
|          * source.rar |  | ||||||
|          * a small text file that gives two-word descriptions of the above files |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # Actual(ly Trying to) Build |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
| 
 |  | ||||||
|     This file included no instructions for how one might build it so we  |  | ||||||
|     tried to run "make" but received the following error: |  | ||||||
| 
 |  | ||||||
|     $ make |  | ||||||
|     .../busybox-1.21.1/scripts/gcc-version.sh: line 11:  |  | ||||||
|     arm-none-linux-gnueabi-gcc: command not found |  | ||||||
| 
 |  | ||||||
| # Toolchain? |  | ||||||
| 
 |  | ||||||
| + The toolchain is rarely considered mandatory as part of “the |  | ||||||
|   scripts”. |  | ||||||
| 
 |  | ||||||
| + Admittedly, it doesn't *control* compilation, it *is* compilation. |  | ||||||
| 
 |  | ||||||
| + The script here is explaining precisely what type of toolchain is needed. |  | ||||||
| 
 |  | ||||||
| + Something like: “GCC vX built with the following ./configure |  | ||||||
|   line” is usually adequate. |  | ||||||
| 
 |  | ||||||
| + But including the toolchain is a nice step to make it easy for your users. |  | ||||||
| 
 |  | ||||||
| <hr> |  | ||||||
| > the scripts used to **control compilation** and installation of the executable. |  | ||||||
| 
 |  | ||||||
| <p align=right> |  | ||||||
| — GPLv2§3 |  | ||||||
| </p> |  | ||||||
| </span> |  | ||||||
| 
 |  | ||||||
| # We Guess at Compiler Anyway |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
|     So we searched for an arm-none-linux-gnueabi- cross-compiler in the  |  | ||||||
|     other files but could not find one.  We then tried to use our own (be  |  | ||||||
|     editing the PATH appropriately), which did get us past this error.  Note  |  | ||||||
|     that this is not acceptable in a source release - the cross-compiler  |  | ||||||
|     that a user must use needs to be clearly indicated (name, version, etc.)  |  | ||||||
|     and/or included with the source release. |  | ||||||
| 
 |  | ||||||
| # Feedback on Small Problems |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
| 
 |  | ||||||
|      Once we had the custom cross-compiler configured, we then ran into these  |  | ||||||
|      errors: |  | ||||||
|       |  | ||||||
|      $ make |  | ||||||
|      .../busybox-1.21.1/scripts/gen_build_files.sh: Permission denied |  | ||||||
|      make: *** [gen_build_files] Error 127 |  | ||||||
|       |  | ||||||
|      $ make |  | ||||||
|      .../busybox-1.21.1/scripts/mkconfigs: Permission denied |  | ||||||
|      make: *** [include/config/MARKER] Error 126 |  | ||||||
|       |  | ||||||
|      $ make |  | ||||||
|      /bin/sh: applets/usage_compressed: Permission denied |  | ||||||
|      make[1]: *** [include/usage_compressed.h] Error 126 |  | ||||||
|      make: *** [applets_dir] Error 2 |  | ||||||
|       |  | ||||||
|      $ make |  | ||||||
|      .../busybox-1.21.1/scripts/trylink: Permission denied |  | ||||||
|      make: *** [busybox_unstripped] Error 126 |  | ||||||
|       |  | ||||||
|      In each case, we found the mentioned file and then added executable  |  | ||||||
|      permissions to it (ie. "chmod u+x scripts/gen_build_files.sh").  This  |  | ||||||
|      must be fixed in the next source release - please set the executable  |  | ||||||
|      bits on the above files appropriately in the archive file you  |  | ||||||
|      distribute. |  | ||||||
| 
 |  | ||||||
| # Install Instructions missing |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
|      After fixing the above, a "busybox" binary was generated.  However,  |  | ||||||
|      there were no instructions to indicate how one might install this binary  |  | ||||||
|      on the device.  Such instructions are required by GPLv2, under which  |  | ||||||
|      BusyBox is licensed.  Please include the instructions in your next  |  | ||||||
|      source release. |  | ||||||
| 
 |  | ||||||
| # Build "Only Seems" To build |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
|      For the AAB_A0101.123.tar.gz package, we ran "./build.sh", the build |  | ||||||
|      took about 140 seconds, which is less than one would expect for building |  | ||||||
|      all of the programs listed in the "OPEN SOURCE SOFTWARE NOTICE".  The |  | ||||||
|      only files we could immediately find that were clearly the result of |  | ||||||
|      this "./build.sh" invocation were some kernel image binaries, found in |  | ||||||
|      path/path/path/path/path/KERNEL_OBJ .  This path was not mentioned at |  | ||||||
|      all and we had to guess at where they might be. |  | ||||||
| 
 |  | ||||||
| # Maybe Proprietary Kernel Modules? |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
|      Furthermore, there were no .ko files generated, which is abnormal for a |  | ||||||
|      build of the kernel, Linux.  Please ensure that all .ko files which are |  | ||||||
|      used on the system are generated with "./build.sh" or a similar script. |  | ||||||
| 
 |  | ||||||
| # Weird versioning |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
| 
 |  | ||||||
|      * The following libraries have different versions in the firmware than |  | ||||||
|         is built from the candidate CCS.  Specifically, your candidate CCS |  | ||||||
|         contains version "1800", and the firmware has version "2400".  Since |  | ||||||
|         most of these libraries are licensed under the LGPL, you are required |  | ||||||
|         to have the complete, corresponding source present for the correct |  | ||||||
|         version as distributed in the firmware.  You also must include the |  | ||||||
|         "scripts to control compilation and installation of the executable". |  | ||||||
|       |  | ||||||
|            * lib/libgio-2.0.so.0.2400.2 |  | ||||||
|            * lib/libglib-2.0.so.0.2400.2 |  | ||||||
|            * lib/libgmodule-2.0.so.0.2400.2 |  | ||||||
|            * lib/libgobject-2.0.so.0.2400.2 |  | ||||||
|            * lib/libgthread-2.0.so.0.2400.2 |  | ||||||
|            * lib/libz.so.1.2.5  (version 1.2.2 is provided in the sources) |  | ||||||
|        |  | ||||||
| # Weird Build Issues Over Many Candidates |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
|     You mentioned in your Round 6 commentary that you have corrected the |  | ||||||
|     thatlib issues.  However, we are unable to see what you mean.  There are |  | ||||||
|     now two copies of thatlib, one in 2624.7_524/uclinux-rootfs/lib/thatlib/, |  | ||||||
|     as well as the one in yourlibs.  We aren't sure which one you intend to |  | ||||||
|     be built to generate the binaries on the firmware.  When we try to build |  | ||||||
|     the yourlibs one from scratch, by cleaning the whole area, we get the |  | ||||||
|     following build issues.  Here's what we did: |  | ||||||
| 
 |  | ||||||
| # Getting Really build-technical |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
| 
 |  | ||||||
|     We ran: |  | ||||||
| 
 |  | ||||||
|       make -C libsrc/thatlib install |  | ||||||
| 
 |  | ||||||
|     which did not work because of a missing Makefile error. We read the |  | ||||||
|     build source and discovered that the Makefile, etc, for that directory |  | ||||||
|     is generated by running: |  | ||||||
| 
 |  | ||||||
|        cd libsrc/thatlib/thatlib-0.9.22_mipsel-uclibc; sh configure_thatlib_mipsel-uclibc |  | ||||||
| 
 |  | ||||||
|     Once we did that |  | ||||||
| 
 |  | ||||||
|        make -C libsrc/thatlib install |  | ||||||
| 
 |  | ||||||
|      worked correctly. The only remaining binaries were in build source and |  | ||||||
|      discovered that the Makefile, etc, for that directory is generated by |  | ||||||
|      running: |  | ||||||
| 
 |  | ||||||
|        cd libsrc/thatlib/thatlib-0.9.22_mipsel-uclibc; sh configure_thatlib_mipsel-uclibc |  | ||||||
| 
 |  | ||||||
| # Getting Really build-technical |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
| 
 |  | ||||||
|     Once we did that |  | ||||||
| 
 |  | ||||||
|        make -C libsrc/thatlib install |  | ||||||
| 
 |  | ||||||
|      worked correctly. The only remaining binaries were in |  | ||||||
|      ./libsrc/thatlib/\{YOURLIB_ROOT_DIR\}/ which looks like a build with a |  | ||||||
|      misconfigured environment somehow, so we simply removed that |  | ||||||
|      directory. |  | ||||||
| 
 |  | ||||||
|      Then, after running make clean, thatlib failed with the following |  | ||||||
|      errors. Random .o/.so files laying around in the thatlib source |  | ||||||
|      directory, and then it failing to build correctly after they are |  | ||||||
|      removed.  If there some set of .so files you claim are not required |  | ||||||
|      as part of the C&CS since thatlib is LGPL'd, we understand that, but |  | ||||||
|      the rest of the sources must build and install those other .so's. |  | ||||||
|      Here's the build error we get in the bdvdlibs version: |  | ||||||
| 
 |  | ||||||
| # Getting Really build-technical |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
| 
 |  | ||||||
|      mkdir .libs/libthatlibwm_default.a.tmp |  | ||||||
|      (cd .libs/libthatlibwm_default.a.tmp && ar x ../../.libs/libthatlibwm_default.a) |  | ||||||
|      mkdir .libs/libthatlibwm_default.a.tmp |  | ||||||
|      (cd .libs/libthatlibwm_default.a.tmp && ar x ../../.libs/libthatlibwm_default.a) |  | ||||||
|      /opt/toolchains/crosstools_sf-linux-2.6.18.0_gcc-4.2-9ts_uclibc-nptl-0.9.29-20070423_20080702/bin//mipsel-uclibc- |  | ||||||
|        ld -o libthatlibwm_default.o -r .libs/libthatlibwm_default.a.tmp/*.o |  | ||||||
|      /opt/toolchains/crosstools_sf-linux-2.6.18.0_gcc-4.2-9ts_uclibc-nptl-0.9.29-20070423_20080702/bin//mipsel-uclibc- |  | ||||||
|        ld: .libs/libthatlibwm_default.a.tmp/default.o: Relocations in generic ELF (EM: 3) |  | ||||||
|      /opt/toolchains/crosstools_sf-linux-2.6.18.0_gcc-4.2-9ts_uclibc-nptl-0.9.29-20070423_20080702/bin//mipsel-uclibc- |  | ||||||
|        ld: .libs/libthatlibwm_default.a.tmp/default.o: Relocations in generic ELF (EM: 3) |  | ||||||
|      /opt/toolchains/crosstools_sf-linux-2.6.18.0_gcc-4.2-9ts_uclibc-nptl-0.9.29-20070423_20080702/bin//mipsel-uclibc- |  | ||||||
|        ld: .libs/libthatlibwm_default.a.tmp/default.o: Relocations in generic ELF (EM: 3) |  | ||||||
|      /opt/toolchains/crosstools_sf-linux-2.6.18.0_gcc-4.2-9ts_uclibc-nptl-0.9.29-20070423_20080702/bin//mipsel-uclibc- |  | ||||||
|        ld: .libs/libthatlibwm_default.a.tmp/default.o: Relocations in generic ELF (EM: 3) |  | ||||||
|      .libs/libthatlibwm_default.a.tmp/default.o: could not read symbols: File in wrong format |  | ||||||
|      make[4]: *** [libthatlibwm_default.o] Error 1 |  | ||||||
| 
 |  | ||||||
| # Proprietary Linux Modules Are Everywhere  |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
|      We did find one .ko file that was already included in the package, but |  | ||||||
|      wasn't built when we ran "./build.sh".  This is |  | ||||||
|      path/path/android_X.X/device/device-type/mydevice.ko , which notes that |  | ||||||
|      its license is "GPL v2" in the modinfo, but for which we could find no |  | ||||||
|      source code in the source release.  Please ensure that the source code |  | ||||||
|      for mydevice.ko is included in the next source candidate. |  | ||||||
| 
 |  | ||||||
| # Proprietary Linux Modules Are Everywhere  |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
| 
 |  | ||||||
|      * The following files are derivative of the kernel named Linux and |  | ||||||
|         therefore covered by the GPL.  However, no source code, scripts to |  | ||||||
|         control compilation nor installation are included in your CCS |  | ||||||
|         candidate: |  | ||||||
|               lib/modules/myfilesystem.ko |  | ||||||
|               lib/modules/mydevicecontroller.ko |  | ||||||
|               lib/modules/myblockdevice.ko |  | ||||||
|               lib/modules/mypcicard.ko |  | ||||||
| 
 |  | ||||||
| # Non-Technical GPL Compliance Issues |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
|     Regarding over the air updates: we'd like to see a screenshot or other |  | ||||||
|       details documenting what has now been implemented by BestBuy to make |  | ||||||
|       sure the offer for source appears to users appropriately after |  | ||||||
|       upgrade.  There was a consensus reached on the last conference call |  | ||||||
|       how this would be done, so we only need follow up and implementation |  | ||||||
|       on that. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # Binary Comparison. |  | ||||||
| 
 |  | ||||||
| <hr/> |  | ||||||
| 
 |  | ||||||
|      Note that we did not receive a firmware image to compare this with  |  | ||||||
|     (though we do have the device).  Company's website did not appear to  |  | ||||||
|     have any firmware images available for download.  It would be helpful to  |  | ||||||
|     have such an image for the next CCS check. |  | ||||||
| 
 |  | ||||||
|     The above source candidate was downloaded from  |  | ||||||
|     http:///sourcez.company.com/en/search/index.htm?keywords=X1234Y, which  |  | ||||||
|     was alluded to in Company's 2017-01-18 email to us that said: |  | ||||||
| 
 |  | ||||||
|     "You can check this website  |  | ||||||
|     http://sourcez.company.com/en/search/index.htm " |  | ||||||
| 
 |  | ||||||
|     The email did not mention how to use that website, but we found that by  |  | ||||||
|     entering "X1234Y" into the top right search box that we could find the  |  | ||||||
|     source file list. |  | ||||||
| 
 |  | ||||||
|     Note that the offer for source included in the web UI of the device said  |  | ||||||
|     to email NAME@COMPANY.com , which is how the above instructions for  |  | ||||||
|     downloading the source were received. |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| # More Info / Talk License | # More Info / Talk License | ||||||
| 
 | 
 | ||||||
| <img align="right" src="cc-by-sa-4-0_88x31.png" /> | <img align="right" src="cc-by-sa-4-0_88x31.png" /> | ||||||
| 
 | 
 | ||||||
| + URLs / Social Networking / Email: |  | ||||||
|      - Pls. support Conservancy: [sfconservancy.org/supporter/](https://sfconservancy.org/supporter/) |  | ||||||
|      - If you hold copyrights in Linux, Debian, Samba, or BusyBox, you can |  | ||||||
|        join our enforcement coalition.  [Contact us!](https://sfconservancy.org/linux-compliance/about.html) |  | ||||||
|      - [*The Guide*](https://copyleft.org/guide) is available & [welcomes contributions at copyleft.org](https://copyleft.org). |  | ||||||
|      - Conservancy: [sfconservancy.org](https://sfconservancy.org/) & [@conservancy](https://twitter.com/conservancy/). |  | ||||||
|      - Me: [faif.us](http://faif.us) & [ebb.org/bkuhn](http://ebb.org/bkuhn) |  | ||||||
|      - Slides: [ebb.org/bkuhn/talks](http://ebb.org/bkuhn/talks/ELC-2015/pristine-example.html). |  | ||||||
| 
 | 
 | ||||||
| <span class="fitonslide"> | <span class="fitonslide"> | ||||||
| <p>Presentation and slides are: Copyright © Bradley M. Kuhn (2008–2011, 2015, 2017), Karen M. Sandler (2017), and are licensed under the <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">Creative Commons Attribution-Share Alike 4.0 International License</a>. </p> | <p>Presentation and slides are: Copyright © Bradley M. Kuhn (2008–2011, 2015, 2017), Karen M. Sandler (2017), and are licensed under the <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/legalcode">Creative Commons Attribution-Share Alike 4.0 International License</a>. </p> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Bradley M. Kuhn
						Bradley M. Kuhn