Introduction to Building Open Source Software
(Created page with "__NOTOC__ {| border="1" |- |'''Title''' || Introduction to building open source software |- |'''Overview''' || In the modern UNIX/Linux/BSD era, the most common way to build ...") |
|||
Line 13: | Line 13: | ||
=== Background: === | === Background: === | ||
− | https://www.gnu.org/software/make/manual/html_node/Introduction.html | + | https://www.gnu.org/software/make/manual/html_node/Introduction.html<BR> |
http://airs.com/ian/configure/configure_1.html | http://airs.com/ian/configure/configure_1.html | ||
Revision as of 19:23, 31 July 2015
Title | Introduction to building open source software |
Overview | In the modern UNIX/Linux/BSD era, the most common way to build and install open source software is with the use of "configure" and "make" tools. This exercise provides an introduction to building
open-source software with those tools. |
Prerequisite Knowledge | Students should be comfortable with: uncompressing source "tarballs", using the Linux commandline, using "su" (or "sudo") to gain root privileges, installing software packages with the native package manager |
Learning Objectives | Student should be able to configure, build, and install software using the "configure" and "make" tools. |
Background:
https://www.gnu.org/software/make/manual/html_node/Introduction.html
http://airs.com/ian/configure/configure_1.html
Directions:
First, let's get started by opening a terminal window. You should be logged in as your normal (non-root) user. If you are not in your home directory, go there by typing:
cd ~
On Fedora, in GNOME, it will look something like this:
EXAMPLE CODE
Run each statement below in a bash terminal. Then answer the questions below (or as you go).
ls touch f1 ls mv f1 f2 ls cp f2 f1 ls rm f2 ls mkdir d1 mv f1 d1 ls ls d1 pwd cd d1 pwd ls cd .. pwd ls rm d1 # fails rm -r d1
- What does `ls` display?
- What does `mv A B` do if `B` ___is not___ a directory?
- What does `mv A B` do if `B` is a directory?
- What does `cp A B` do if `B` ___is not___ a directory?
- What does `rm A` do if `A` is a file?
- What does `mkdir A` do?
- What does `pwd` display?
- What does `ls A` display if `A` is a directory?
- What does `cd A` do?
- What does `cd ..` do?
- What does `..` mean in `cd ..`?
- When do you use `rm -r A` instead of `rm A`?
Getting Help
Run each statement below in a bash terminal. Then answer the questions below (or as you go).
man man man # Press `space` to page down, `b` to go back, `q` to quit. man ls man cd # Unexpected result. help cd
- What does `man` do?
- What does `help` do?
- Use `man` to confirm answers in previous section.
Deliverables:
- Answers and explanations for the license scenarios
- A short lightning talk presentation that clearly illustrates a correct and attributed use of CC materials.
Assessment:
Students can be graded on choosing a correct license, understanding how a license affects what can be done with a creative work, and on their ability to put that knowledge into practice.
Criteria | Level 1 (fail) | Level 2 (pass) | Level 3 (good) | Level 4 (exceptional) |
Choosing a correct CC license | 0-2 correct answers | 2-4 answers correct, with valid reasoning (or more answers correct, but without valid reasoning) | 4-5 answers correct, with valid reasoning | All answers correct, with valid reasoning. |
Understanding how a license affects what can be done with a creative work | 0-1 correct answers | 1-2 correct answers | 2-3 correct answers | All answers correct |
Presentation | Does not attribute sources at all | Lists license but not full attribution | Contains proper attributions, but only a few sources. | Multiple sources, properly attributed. Talk itself is properly CC licensed |
Comments:
What should the instructor know before using this activity?
A basic familiarity with autotools generated configure and Makefiles is very helpful, though, not necessarily required.
Additional Information:
Knowledge Area/Knowledge Unit | Software Engineering (SE) / Tools and Environments |
Topic | Software configuration management and version control |
Level of Difficulty | Easy |
Estimated Time to Completion | 30 minutes to 1 hour |
Materials/Environment | Internet access, computer (or VM) with Linux installed, student has account and root access (sudo is fine). Some commands reference Fedora, but can be converted to other Linux flavors. |
Author | Tom Callaway |
Source | |
License | This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License |
Suggestions for the Open Source Project:
What documentation do you provide on how to build your code? Is it current and accurate? Do you discuss the various configuration options and what effect they have on the final build?
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License