You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+34-32Lines changed: 34 additions & 32 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,66 +1,68 @@
1
1
# VEVOS: Ground Truth Extraction
2
-
3
2
VEVOS is a tool suite for the simulation of the evolution of clone-and-own projects and consists of two main components: The ground truth extraction, called VEVOS/Extraction and the variant simulation called VEVOS/Simulation.
4
3
5
4
This repository contains VEVOS/Extraction and thus the first part of the replication package for the paper _Simulating the Evolution of Clone-and-Own Projects with VEVOS_ submitted to the International Conference on Evaluation and Assessment in Software Engineering (EASE) 2022.
6
-
VEVOS/Extraction is a java for extracting feature mappings, presence conditions, and feature models for each revision (withing a specified range of the commit-history) from an input software product line.
5
+
VEVOS/Extraction is a java project for extracting feature mappings, presence conditions, and feature models for each revision (within a specified range of the commit-history) from an input software product line.
6
+
7
+

7
8
8
9
## Quick Start using Docker
9
-
In the following, we provide instructions on how to quickly extract the ground truth of Linux or Busybox with the provided
10
-
Docker setup.
10
+
In the following, we provide instructions on how to quickly extract the ground truth of Linux or Busybox with the provided Docker setup.
11
11
12
12
### Requirements
13
13
The only requirement is Docker. We provide batch and bash scripts that execute the necessary Docker setup and execution.
14
14
We tested the Docker setup under Windows and Linux.
15
-
We have not tested the setup on Mac, but you should be able to use follow the instructions for Linux.
15
+
We have not tested the setup on Mac, but you should be able to use the instructions for Linux.
16
16
17
17
### Preparation
18
18
#### Docker
19
19
Docker must be installed on your system, and the Docker daemon must be running.
20
-
For installation, follow the instructions given in the installation guide for your OS which you can find
20
+
For installation, follow the instructions given in the installation guide for your OS which you can find
-`(option-1|option-2)` -> You *must* provide one of the two.
47
+
-`(option-1|option-2)` -> You *must* provide either a value for `option-1` or `option-2`.
46
48
-`[option]` -> You *may* provide a value
47
49
48
50
The script must be provided with `busybox` or `linux` as first argument, in order to specify which SPL should be considered.
49
-
In addition, you can optionally provide either one or two more arguments specifying a commit-id or git-tag.
51
+
In addition, you can optionally provide either one or two more arguments specifying a commit-id or git-tag.
50
52
51
53
If you specify __no__ id or tag, the entire history is considered.
52
54
53
-
If you specify __exactly one__ id or tag, the extraction will only consider the one commit that is found under the id/tag.
54
-
This can be used to quickly test whether everything is working as intended.
55
+
If you specify __exactly one__ id or tag, the extraction will only consider the one commit that is found under the id/tag.
56
+
This can be used to quickly test whether everything is working as intended or to run the extraction for one commit only (e.g., when no evolution information is necessary).
55
57
56
58
If you specify __two__ ids or tags, the extraction will consider the range of commits that lies between the first and the second
57
59
commit. The commit retrieval follows the same logic as [git log](https://git-scm.com/docs/git-log), i.e., it will retrieve
58
60
all commits that are ancestors of the second commit, but __not__ ancestors of the first commit.
@@ -70,8 +72,8 @@ The entire history of BusyBox can be extracted in about one day.
70
72
For Linux, even considering only the commits between two minor revisions, e.g. v4.1 and v4.2, can take several days.
71
73
72
74
#### Errors in Log
73
-
If the entire history of BusyBox or Linux is considered, large numbers of non-extractable commits are to be expected.
74
-
Therefore, errors that appear in the log do not indicate a problem with the setup, but only indicate that a commit could not be processed.
75
+
If the entire history of BusyBox or Linux is considered, non-extractable commits are to be expected.
76
+
Therefore, errors that appear in the log do not necessarily indicate a problem with the setup, but only indicate that a commit could not be processed.
75
77
76
78
#### Examples:
77
79
```
@@ -93,29 +95,29 @@ start-extraction.bat linux v4.3 v4.4
93
95
```
94
96
95
97
### Stopping the Ground Truth Extraction
96
-
You can stop the Docker container in which the ground truth extraction is running at any time. In this case, all
97
-
collected data will be copied to _Extraction/extraction-results/_ as if the extraction finished successfully.
98
+
You can stop the Docker container in which the ground truth extraction is running at any time. In this case, all
99
+
collected data will be copied to _Extraction/extraction-results/_ as if the extraction finished successfully.
98
100
99
-
- Windows CMD:
101
+
- Windows CMD:
100
102
-`stop-extraction.bat busybox`
101
103
-`stop-extraction.bat linux`
102
-
- Linux terminal:
104
+
- Linux terminal:
103
105
-`./stop-extraction.sh busybox`
104
106
-`./stop-extraction.sh linux`
105
107
106
108
### Custom Configuration
107
-
You can find the properties files used by Docker under Extraction/docker-resources. By changing the properties
108
-
for BusyBox or Linux respectively, you can adjust the ground truth extraction (e.g., change the log level,
109
+
You can find the properties files used by Docker under Extraction/docker-resources. By changing the properties
110
+
for BusyBox or Linux respectively, you can adjust the ground truth extraction (e.g., change the log level,
109
111
number of threads, etc.). For your convenience, we set all properties to default values. __Note that you have to rebuild the Docker image in order for the changes to take effect__.
110
112
111
113
This can also be used in case you want to extract the ground truth for any other SPL besides Linux and BusyBox. However,
112
114
please note that this requires the correct configuration of KernelHaven and possibly other preprocessing steps, that
113
115
are not included in this project. In addition, the extractors that are used internally, i.e., KbuildMiner and KconfigReader
114
-
might not be applicable to the chosen SPL. In this case, custom extractors have to be implemented and added to the dependencies
116
+
might not be applicable to the chosen SPL. In this case, custom extractors have to be implemented and added to the dependencies
115
117
in the _pom.xml_ file.
116
118
117
119
### Clean-Up
118
-
You clean up all created images, container, and volumes via `docker system prune -a`. __DISCLAIMER: This will remove ALL docker objects, even the ones not related to ground truth extraction__. If you have other images, containers, or volumes that you do not want to loose, you can run the docker commands that refer to the objects related to the ground truth extraction.
120
+
You can clean up all created images, container, and volumes via `docker system prune -a`. __DISCLAIMER: This will remove ALL docker objects, even the ones not related to ground truth extraction__. If you have other images, containers, or volumes that you do not want to loose, you can run the docker commands that refer to the objects related to the ground truth extraction.
119
121
- Image: `docker rmi extraction`
120
122
- Container:
121
123
-`docker container rm extraction-busybox`
@@ -126,7 +128,7 @@ You clean up all created images, container, and volumes via `docker system prune
126
128
127
129
## Custom System Setup
128
130
If you want to run the ground truth extraction without Docker, you will have to first set up the environment in which
129
-
the extraction is executed.
131
+
the extraction is executed.
130
132
131
133
### Limitations
132
134
There are some limitations to the ground truth extraction that should be mentioned.
@@ -159,7 +161,7 @@ It is possible to use WSL to run the extraction on a Windows machine.
159
161
160
162
#### Installing WSL2 with Ubuntu 20 LTS
161
163
- Follow the guide at https://docs.microsoft.com/en-us/windows/wsl/install-win10
162
-
- Using WSL2 is strongly recommended, because the extraction under WSL1 will take a lifetime. You can check which WSL you
164
+
- Using WSL2 is strongly recommended, because the extraction under WSL1 will take a lifetime. You can check which WSL you
163
165
have installed by following the instructions here https://askubuntu.com/questions/1177729/wsl-am-i-running-version-1-or-version-2
164
166
- You can list the installed distributions with `wsl --list --verbose`
0 commit comments