Difference between revisions of "SPO600 Codebase Analysis Lab"

From CDOT Wiki
Jump to: navigation, search
(Created page with 'Category:SPO600 Labs-future{{Chris Tyler Draft}} {{Admon/lab|Purpose of this Lab|In this lab, you will examine the codebase of an open source project to find platform-specifi…')
 
 
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:SPO600 Labs-future]]{{Chris Tyler Draft}}
+
[[Category:SPO600 Labs - Retired]]
 
{{Admon/lab|Purpose of this Lab|In this lab, you will examine the codebase of an open source project to find platform-specific code and determine its purpose.}}
 
{{Admon/lab|Purpose of this Lab|In this lab, you will examine the codebase of an open source project to find platform-specific code and determine its purpose.}}
 +
{{Admon/important|This lab is not used in the current semester.|Please refer to the other labs in the [[:Category:SPO600 Labs|SPO600 Labs]] category.}}
 +
== Lab 4 ==
 +
 +
1. Find your group in the [[#Package Lists by Group|list below]]. Select the same number of packages as you have people in your group (e.g., if there are two in your group, then pick two of the three packages). Add a package from the Spares list if necessary. If you are doing this lab and are not in class, chose two packages from the Spares list.
 +
 +
2. Obtain the source code for this software. You can find the upstream website and download it from there (or the corresponding code repository), or on a Fedora system (either your own or [[SPO600 aarch64 QEMU on Ireland|ireland]]), you can follow these steps (recommended):
 +
 +
fedpkg clone -a ''packagename''
 +
cd ''packagename''
 +
fedpkg prep
 +
cd ''packagename-version''
 +
 +
3. For each package, identify:
 +
* The general purpose of the package.
 +
* The location of all assembly language code. Check for <code>asm()</code>, <code>__asm__</code>, and stand-alone files (<code>.s</code> or <code>.S</code> files).
 +
* The purpose of each assembly language fragment.
 +
* Whether the asm code was written specifically for that software package, or code from a library or other open source package containing assembler was imported into that package (i.e., an included or forked library).
 +
* The architectures supported by the assembly code (it is common to use cpp directives to conditionally include one of several different assembly fragments).
 +
* Fallbacks, if any, provided for other architectures, and the impact of using the fallback (lower performance, missing features, incorrect operation).
 +
* Your estimate of whether the package can be built on aarch64 in its current form, and how that build would compare to the x86_64 build in terms of features and performance. (Note: It may be useful to look at the %build section of the spec file, located in the directory in which you performed the ''fedpkg prep'').
 +
 +
4. Select one package to present to the class during the lab period.
 +
 +
5. Write a detailed blog post with your findings for two of your group's packages. Include examples of some of the asm code found.
 +
 +
== Package Lists by Group ==
 +
 +
* Group 1
 +
** lua
 +
** nspr
 +
** samba
 +
* Group 2
 +
** pcre
 +
** sqlite
 +
** gimp
 +
* Group 3
 +
** spice
 +
** mariadb
 +
** eigen3
 +
* Group 4
 +
** nspr
 +
** ogre
 +
** syslinux
 +
* Group 5
 +
** sysprof
 +
** php
 +
** oprofile
 +
* Spares
 +
** asterisk
 +
** exim
 +
** linphone
 +
** acpidump
 +
** gmp
 +
** mesa

Latest revision as of 13:41, 11 January 2016

Lab icon.png
Purpose of this Lab
In this lab, you will examine the codebase of an open source project to find platform-specific code and determine its purpose.
Important.png
This lab is not used in the current semester.
Please refer to the other labs in the SPO600 Labs category.

Lab 4

1. Find your group in the list below. Select the same number of packages as you have people in your group (e.g., if there are two in your group, then pick two of the three packages). Add a package from the Spares list if necessary. If you are doing this lab and are not in class, chose two packages from the Spares list.

2. Obtain the source code for this software. You can find the upstream website and download it from there (or the corresponding code repository), or on a Fedora system (either your own or ireland), you can follow these steps (recommended):

fedpkg clone -a packagename
cd packagename
fedpkg prep
cd packagename-version

3. For each package, identify:

  • The general purpose of the package.
  • The location of all assembly language code. Check for asm(), __asm__, and stand-alone files (.s or .S files).
  • The purpose of each assembly language fragment.
  • Whether the asm code was written specifically for that software package, or code from a library or other open source package containing assembler was imported into that package (i.e., an included or forked library).
  • The architectures supported by the assembly code (it is common to use cpp directives to conditionally include one of several different assembly fragments).
  • Fallbacks, if any, provided for other architectures, and the impact of using the fallback (lower performance, missing features, incorrect operation).
  • Your estimate of whether the package can be built on aarch64 in its current form, and how that build would compare to the x86_64 build in terms of features and performance. (Note: It may be useful to look at the %build section of the spec file, located in the directory in which you performed the fedpkg prep).

4. Select one package to present to the class during the lab period.

5. Write a detailed blog post with your findings for two of your group's packages. Include examples of some of the asm code found.

Package Lists by Group

  • Group 1
    • lua
    • nspr
    • samba
  • Group 2
    • pcre
    • sqlite
    • gimp
  • Group 3
    • spice
    • mariadb
    • eigen3
  • Group 4
    • nspr
    • ogre
    • syslinux
  • Group 5
    • sysprof
    • php
    • oprofile
  • Spares
    • asterisk
    • exim
    • linphone
    • acpidump
    • gmp
    • mesa