Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release/4.0.1 #686

Merged
merged 6 commits into from
Nov 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ jobs:
- name: C++ unit tests
run: |
build/test/unit_tests/DiscoPoP_UT

execute_end_to_end_tests:
runs-on: ubuntu-20.04
name: Execute end-to-end tests
Expand Down Expand Up @@ -158,6 +158,7 @@ jobs:

- name: Python end-to-end-tests
run: |
. venv/bin/activate
python -m unittest -v -k *.end_to_end.*
update_wiki-build:
name: "Update Wiki - Build"
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,9 @@ venv.bak/
*.a
*.lib

# Packages
packages/

# Executables
*.exe
*.out
Expand Down
89 changes: 62 additions & 27 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -102,32 +102,67 @@ file(APPEND "${DiscoPoP_SOURCE_DIR}/discopop_library/ConfigProvider/assets/build
file(APPEND "${DiscoPoP_SOURCE_DIR}/discopop_library/ConfigProvider/assets/build_config.py" "DP_BRANCH_TRACKING=\"${DP_BRANCH_TRACKING}\"\n")


# print DiscoPoP configuration
file(READ ${DiscoPoP_SOURCE_DIR}/discopop_library/ConfigProvider/assets/build_config.py DiscoPoP_CONFIGURATION)
string(REGEX REPLACE "\n$" "" DiscoPoP_CONFIGURATION "${DiscoPoP_CONFIGURATION}")
string(REGEX REPLACE "\n" "\n " DiscoPoP_CONFIGURATION "${DiscoPoP_CONFIGURATION}")
message(STATUS "DiscoPoP configuration:\n ${DiscoPoP_CONFIGURATION}")

# install DiscoPoP python modules
find_package(Python3 REQUIRED COMPONENTS Interpreter)

# check if python tkinter module is available
execute_process(
COMMAND ${Python3_EXECUTABLE} -c "import tkinter"
RESULT_VARIABLE TKINTER_AVAILABLE_EXIT_CODE
)
if(${TKINTER_AVAILABLE_EXIT_CODE})
message(FATAL_ERROR "Python module 'tkinter' not found. Please install the 'python3-tk' package via a package manager.")
endif()
if(NOT ${IS_DEB_INSTALL} STREQUAL "")
message(STATUS "performing installation from .deb package")
else()
# print DiscoPoP configuration
file(READ ${DiscoPoP_SOURCE_DIR}/discopop_library/ConfigProvider/assets/build_config.py DiscoPoP_CONFIGURATION)
string(REGEX REPLACE "\n$" "" DiscoPoP_CONFIGURATION "${DiscoPoP_CONFIGURATION}")
string(REGEX REPLACE "\n" "\n " DiscoPoP_CONFIGURATION "${DiscoPoP_CONFIGURATION}")
message(STATUS "DiscoPoP configuration:\n ${DiscoPoP_CONFIGURATION}")

# install DiscoPoP python modules
find_package(Python3 REQUIRED COMPONENTS Interpreter)

# setup DiscoPoP venv
message(STATUS "Setting up DiscoPoP python venv: ${DiscoPoP_SOURCE_DIR}/venv")
execute_process(
COMMAND ${Python3_EXECUTABLE} -m venv ${DiscoPoP_SOURCE_DIR}/venv
)
set(Python3_VENV_EXECUTABLE ${DiscoPoP_SOURCE_DIR}/venv/bin/python3)


# check if python tkinter module is available
execute_process(
COMMAND ${Python3_VENV_EXECUTABLE} -c "import tkinter"
RESULT_VARIABLE TKINTER_AVAILABLE_EXIT_CODE
)
if(${TKINTER_AVAILABLE_EXIT_CODE})
message(FATAL_ERROR "Python module 'tkinter' not found. Please install the 'python3-tk' package via a package manager.")
endif()

# install DiscoPoP python modules
message(STATUS "Installing DiscoPoP python modules")
execute_process(
COMMAND ${Python3_VENV_EXECUTABLE} -m pip install ${DiscoPoP_SOURCE_DIR}
RESULT_VARIABLE DP_INSTALLATION_EXIT_CODE
OUTPUT_VARIABLE DP_INSTALLATION_OUTPUT
)
# check if installation of DiscoPoP Modules was successful
if(${DP_INSTALLATION_EXIT_CODE})
message(FATAL_ERROR "${DP_INSTALLATION_OUTPUT}")
endif()

# create symlinks for python executables
message(STATUS "Creating symlinks for DiscoPoP python executables")
set(DP_LOCAL_BIN_DIR "$ENV{HOME}/.local/bin")
execute_process(COMMAND rm -f ${DP_LOCAL_BIN_DIR}/discopop_auto_tuner)
execute_process(COMMAND rm -f ${DP_LOCAL_BIN_DIR}/discopop_config_provider)
execute_process(COMMAND rm -f ${DP_LOCAL_BIN_DIR}/discopop_explorer)
execute_process(COMMAND rm -f ${DP_LOCAL_BIN_DIR}/discopop_optimizer)
execute_process(COMMAND rm -f ${DP_LOCAL_BIN_DIR}/discopop_patch_applicator)
execute_process(COMMAND rm -f ${DP_LOCAL_BIN_DIR}/discopop_patch_generator)
message(STATUS "--> discopop_auto_tuner")
execute_process(COMMAND ln -sf ${DiscoPoP_SOURCE_DIR}/venv/bin/discopop_auto_tuner ${DP_LOCAL_BIN_DIR}/discopop_auto_tuner)
message(STATUS "--> discopop_config_provider")
execute_process(COMMAND ln -sf ${DiscoPoP_SOURCE_DIR}/venv/bin/discopop_config_provider ${DP_LOCAL_BIN_DIR}/discopop_config_provider)
message(STATUS "--> discopop_explorer")
execute_process(COMMAND ln -sf ${DiscoPoP_SOURCE_DIR}/venv/bin/discopop_explorer ${DP_LOCAL_BIN_DIR}/discopop_explorer)
message(STATUS "--> discopop_optimizer")
execute_process(COMMAND ln -sf ${DiscoPoP_SOURCE_DIR}/venv/bin/discopop_optimizer ${DP_LOCAL_BIN_DIR}/discopop_optimizer)
message(STATUS "--> discopop_patch_applicator")
execute_process(COMMAND ln -sf ${DiscoPoP_SOURCE_DIR}/venv/bin/discopop_patch_applicator ${DP_LOCAL_BIN_DIR}/discopop_patch_applicator)
message(STATUS "--> discopop_patch_generator")
execute_process(COMMAND ln -sf ${DiscoPoP_SOURCE_DIR}/venv/bin/discopop_patch_generator ${DP_LOCAL_BIN_DIR}/discopop_patch_generator)

# install DiscoPoP python modules
message(STATUS "Installing DiscoPoP python modules")
execute_process(
COMMAND ${Python3_EXECUTABLE} -m pip install ${DiscoPoP_SOURCE_DIR}
RESULT_VARIABLE DP_INSTALLATION_EXIT_CODE
OUTPUT_VARIABLE DP_INSTALLATION_OUTPUT
)
# check if installation of DiscoPoP Modules was successful
if(${DP_INSTALLATION_EXIT_CODE})
message(FATAL_ERROR "${DP_INSTALLATION_OUTPUT}")
endif()
6 changes: 6 additions & 0 deletions DEBIAN/control.raw
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Package: discopop
Maintainer: Lukas Rothenberger <[email protected]>
Depends: libc6,python3-tk,python3
Architecture: all
Homepage: https://github.com/discopop-project/discopop
Description: DiscoPoP is an open-source tool that helps software developers parallelize their programs with threads. It is a joint project of the Laboratory for Parallel Programming @ TU Darmstadt and the Software Analytics and Pervasive Parallelism Lab at Iowa State University.
55 changes: 55 additions & 0 deletions DEBIAN/postinst
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
DP_DIR=/opt/DiscoPoP
chmod 777 ${DP_DIR}
DP_BUILD_DIR=/opt/DiscoPoP/build
mkdir -p ${DP_BUILD_DIR}
chmod 777 ${DP_BUILD_DIR}
cd ${DP_BUILD_DIR}
echo "Created DiscoPoP build dir: ${DP_BUILD_DIR}"

echo "Downloading llvm 11.1.0"
mkdir third_party
cd third_party
wget https://github.com/llvm/llvm-project/releases/download/llvmorg-11.1.0/clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz
tar -xvf clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz
mv clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10 llvm-11.1.0
rm clang+llvm-11.1.0-x86_64-linux-gnu-ubuntu-20.10.tar.xz
LLVM_DIR=${DP_BUILD_DIR}/third_party/llvm-11.1.0

echo "Building DiscoPoP"
cd ${DP_BUILD_DIR}
cmake .. -DLLVM_DIST_PATH=${LLVM_DIR} -DIS_DEB_INSTALL="TRUE" -DDP_PTHREAD_COMPATIBILITY_MODE=0 -DDP_NUM_WORKERS=8 -DDP_RTLIB_VERBOSE=0 -DDP_MEMORY_REGION_DEALIASING=0 -DDP_BRANCH_TRACKING=0 -DDP_CALLSTACK_PROFILING=0 -DDP_STACK_ACCESS_DETECTION=0 -DDP_CALLSTACK_PROFILING_ENABLE_CUTOFF=1 -DDP_INTERNAL_TIMER=0 -DDP_HYBRID_PROFILING=1 -DDP_HYBRID_PROFILING_CUTOFF=0 -DDP_HYBRID_PROFILING_CUTOFF_IGNORE_PROBABILITY=1 -DDP_PROFILING_SAMPLING_PROBABILITY=0 -DDP_CALLTREE_PROFILING=1 -DDP_CALLTREE_PROFILING_METADATA_CUTOFF=5 -DDP_CALLTREE_PROFILING_METADATA_CUTOFF_IGNORE_PROBABILITY=1
make -j 4

chmod -R 777 ${DP_DIR}

echo "Setting up DiscoPoP python venv"
cd ${DP_DIR}
su ${SUDO_USER} -c "python3 -m venv venv"
VENV_PYTHON=${DP_DIR}/venv/bin/python3

echo "Installing DiscoPoP python modules"
su ${SUDO_USER} -c "${VENV_PYTHON} -m pip install . -v"

#
#echo "Creating symlinks"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_cc"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_cxx"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_cmake"

su ${SUDO_USER} -c "ln -sf ${DP_BUILD_DIR}/scripts/CC_wrapper.sh ~/.local/bin/discopop_cc"
su ${SUDO_USER} -c "ln -sf ${DP_BUILD_DIR}/scripts/CXX_wrapper.sh ~/.local/bin/discopop_cxx"
su ${SUDO_USER} -c "ln -sf ${DP_BUILD_DIR}/scripts/CMAKE_wrapper.sh ~/.local/bin/discopop_cmake"

su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_auto_tuner"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_config_provider"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_explorer"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_optimizer"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_patch_applicator"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_patch_generator"

su ${SUDO_USER} -c "ln -sf ${DP_DIR}/venv/bin/discopop_auto_tuner ~/.local/bin/discopop_auto_tuner"
su ${SUDO_USER} -c "ln -sf ${DP_DIR}/venv/bin/discopop_config_provider ~/.local/bin/discopop_config_provider"
su ${SUDO_USER} -c "ln -sf ${DP_DIR}/venv/bin/discopop_explorer ~/.local/bin/discopop_explorer"
su ${SUDO_USER} -c "ln -sf ${DP_DIR}/venv/bin/discopop_optimizer ~/.local/bin/discopop_optimizer"
su ${SUDO_USER} -c "ln -sf ${DP_DIR}/venv/bin/discopop_patch_applicator ~/.local/bin/discopop_patch_applicator"
su ${SUDO_USER} -c "ln -sf ${DP_DIR}/venv/bin/discopop_patch_generator ~/.local/bin/discopop_patch_generator"
12 changes: 12 additions & 0 deletions DEBIAN/postrm
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
rm -rf /opt/DiscoPoP

su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_cc"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_cxx"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_cmake"

su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_auto_tuner"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_config_provider"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_explorer"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_optimizer"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_patch_applicator"
su ${SUDO_USER} -c "rm -f ~/.local/bin/discopop_patch_generator"
Empty file added DEBIAN/preinst
Empty file.
Empty file added DEBIAN/prerm
Empty file.
22 changes: 11 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,25 +34,25 @@ For a brief introduction to the command line tools, please refer to the [tools o
For detailed information on the gathered and stored data as well as the tools themselves, please refer to [data](https://discopop-project.github.io/discopop/Data) and the pages of the individual tools in the [tools overview](https://discopop-project.github.io/discopop/Tools).

## TL;DR
This example installs DiscoPoP, instruments and builds the provided example, analyzes the results, and prints the identified parallelization suggestions to the console.
If you are interested in installing DiscoPoP as a `developer`, please refer to the [DiscoPoP setup wiki page](https://discopop-project.github.io/discopop/setup/discopop/).

The following example installs DiscoPoP for `users`, instruments and builds the provided example, analyzes the results, and prints the identified parallelization suggestions to the console.
In case any issues arise during the process, please refer to the detailed [setup instructions](https://discopop-project.github.io/discopop/Setup), contact us via GitHub messages, or get in contact by mail to [[email protected]](mailto:[email protected]).

### Prerequisites
- Download `.deb` package from [latest Release](https://github.com/discopop-project/discopop/releases/latest)
### Example
```
# setup DiscoPoP
git clone [email protected]:discopop-project/discopop.git
cd discopop
mkdir build && cd build
DP_BUILD=$(pwd)
cmake .. && make
# install package
sudo apt install ./<packagename>.deb
# instrument and build the example code
cd ../example
mkdir build && cd build && cmake -DCMAKE_CXX_COMPILER=${DP_BUILD}/scripts/CXX_wrapper.sh .. && make
cd /opt/DiscoPoP/example
mkdir build && cd build && cmake -DCMAKE_CXX_COMPILER=discopop_cxx .. && make
# execute instrumented code
./cmake_example
# identify parallel patterns
cd .discopop
discopop_explorer
# create applicable patches from patterns
discopop_patch_generator
# print patches to the console
for f in $(find patch_generator -maxdepth 1 -type d); do
echo "SUGGESTION: $f"
Expand Down
2 changes: 1 addition & 1 deletion discopop_library/global_data/version/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.0.0
4.0.1
2 changes: 2 additions & 0 deletions docs/How_to_contribute.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ Commit messages should follow the conventional commits format: [conventional com
Execute the following steps in order to create a new DiscoPoP release:
- Switch to the release branch (e.g. `release/1.2.3`) which shall be released
- Update the version file in the repository (`discopop_library/global_data/version/VERSION`)
- Create a `.deb` package by executing `scripts/dev/create_package.sh`. The package will be created in `packages`.
- Create a pull request to the `master` branch and validate the changes
- Merge the pull request by rebasing and create a tag on the `master` branch with the name `v1.2.3`
- Creating the tag triggers the automatic publication of the project to PyPi
Expand All @@ -51,6 +52,7 @@ Execute the following steps in order to create a new DiscoPoP release:
- Release tag: `v1.2.3`
- Release title: `DiscoPoP Version 1.2.3`
- Description should contain a summary of the most relevant changes
- Add the created `.deb` package to the list of files
- If everything is fine, publish the new release

### Determining the Version Number
Expand Down
14 changes: 12 additions & 2 deletions docs/setup/discopop.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,16 @@ parent: Setup
nav_order: 1
---

# DiscoPoP Setup
# DiscoPoP Setup - Package
- Proposed method of installation for `users` of DiscoPoP
- Download the `.deb` package of choice from [releases](https://github.com/discopop-project/discopop/releases).
- Packages for different targets and configurations might become available in the future
- Install via a package manager of choice (example: `sudo apt install ./<packagename>.deb`)
- Uninstall via a package manager of choice (example: `sudo apt remove discopop`)


# DiscoPoP Setup - Manual
- Proposed method of installation for `developers` of DiscoPoP
## Prerequisites
- LLVM/clang version 11
- Python version 3.6 or greater
Expand Down Expand Up @@ -47,5 +56,6 @@ where `<CMAKE_FLAGS>` can consist of any combination of the following flags and
## Testing the installation
To test the installation, it is possible to execute the provided set of unit tests.
```
python -m unittest -v
cd <dp_source_dir>
venv/bin/python -m unittest -v
```
37 changes: 21 additions & 16 deletions scripts/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,22 +18,27 @@ configure_file(MPI_CC_wrapper.sh MPI_CC_wrapper.sh COPYONLY)
configure_file(MPI_CXX_wrapper.sh MPI_CXX_wrapper.sh COPYONLY)
configure_file(MPI_LINKER_wrapper.sh MPI_LINKER_wrapper.sh COPYONLY)

# create symlinks to files
set(DP_LOCAL_BIN_DIR "$ENV{HOME}/.local/bin")
if(EXISTS ${DP_LOCAL_BIN_DIR})
execute_process(COMMAND rm -f ${DP_LOCAL_BIN_DIR}/discopop_cc)
message(STATUS "Creating symlink ${DP_LOCAL_BIN_DIR}/discopop_cc to ${CMAKE_CURRENT_BINARY_DIR}/CC_wrapper.sh")
execute_process(COMMAND ln -sf ${CMAKE_CURRENT_BINARY_DIR}/CC_wrapper.sh ${DP_LOCAL_BIN_DIR}/discopop_cc)
if(NOT ${IS_DEB_INSTALL} STREQUAL "")
# create symlinks to files
message(STATUS "performing installation from .deb package")
else()
# create symlinks to files
set(DP_LOCAL_BIN_DIR "$ENV{HOME}/.local/bin")
if(EXISTS ${DP_LOCAL_BIN_DIR})
execute_process(COMMAND rm -f ${DP_LOCAL_BIN_DIR}/discopop_cc)
message(STATUS "Creating symlink ${DP_LOCAL_BIN_DIR}/discopop_cc to ${CMAKE_CURRENT_BINARY_DIR}/CC_wrapper.sh")
execute_process(COMMAND ln -sf ${CMAKE_CURRENT_BINARY_DIR}/CC_wrapper.sh ${DP_LOCAL_BIN_DIR}/discopop_cc)

execute_process(COMMAND rm -f ${DP_LOCAL_BIN_DIR}/discopop_cxx)
message(STATUS "Creating symlink ${DP_LOCAL_BIN_DIR}/discopop_cxx to ${CMAKE_CURRENT_BINARY_DIR}/CXX_wrapper.sh")
execute_process(COMMAND ln -sf ${CMAKE_CURRENT_BINARY_DIR}/CXX_wrapper.sh ${DP_LOCAL_BIN_DIR}/discopop_cxx)
execute_process(COMMAND rm -f ${DP_LOCAL_BIN_DIR}/discopop_cxx)
message(STATUS "Creating symlink ${DP_LOCAL_BIN_DIR}/discopop_cxx to ${CMAKE_CURRENT_BINARY_DIR}/CXX_wrapper.sh")
execute_process(COMMAND ln -sf ${CMAKE_CURRENT_BINARY_DIR}/CXX_wrapper.sh ${DP_LOCAL_BIN_DIR}/discopop_cxx)

execute_process(COMMAND rm -f ${DP_LOCAL_BIN_DIR}/discopop_cmake)
message(STATUS "Creating symlink ${DP_LOCAL_BIN_DIR}/discopop_cmake to ${CMAKE_CURRENT_BINARY_DIR}/CMAKE_wrapper.sh")
execute_process(COMMAND ln -sf ${CMAKE_CURRENT_BINARY_DIR}/CMAKE_wrapper.sh ${DP_LOCAL_BIN_DIR}/discopop_cmake)
else()
message(WARNING "Creation of symlinks discopop_cc to ${CMAKE_CURRENT_BINARY_DIR}/CC_wrapper.sh not possible. Please create it manually.")
message(WARNING "Creation of symlinks discopop_cxx to ${CMAKE_CURRENT_BINARY_DIR}/CXX_wrapper.sh not possible. Please create it manually.")
message(WARNING "Creation of symlinks discopop_cmake to ${CMAKE_CURRENT_BINARY_DIR}/CMAKE_wrapper.sh not possible. Please create it manually.")
execute_process(COMMAND rm -f ${DP_LOCAL_BIN_DIR}/discopop_cmake)
message(STATUS "Creating symlink ${DP_LOCAL_BIN_DIR}/discopop_cmake to ${CMAKE_CURRENT_BINARY_DIR}/CMAKE_wrapper.sh")
execute_process(COMMAND ln -sf ${CMAKE_CURRENT_BINARY_DIR}/CMAKE_wrapper.sh ${DP_LOCAL_BIN_DIR}/discopop_cmake)
else()
message(WARNING "Creation of symlinks discopop_cc to ${CMAKE_CURRENT_BINARY_DIR}/CC_wrapper.sh not possible. Please create it manually.")
message(WARNING "Creation of symlinks discopop_cxx to ${CMAKE_CURRENT_BINARY_DIR}/CXX_wrapper.sh not possible. Please create it manually.")
message(WARNING "Creation of symlinks discopop_cmake to ${CMAKE_CURRENT_BINARY_DIR}/CMAKE_wrapper.sh not possible. Please create it manually.")
endif()
endif()
3 changes: 3 additions & 0 deletions scripts/dev/check-license.sh
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ for file in "$@"; do
# third-party software
[[ "$file" = *"third_party/"* ]] && continue

# DEBIAN files for .deb creation
[[ "$file" = *"DEBIAN/"* ]] && continue


# check for the license tag in the first 20 lines of the file
FILE_ERROR=""
Expand Down
44 changes: 44 additions & 0 deletions scripts/dev/create_package.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# This file is part of the DiscoPoP software (http://www.discopop.tu-darmstadt.de)
#
# Copyright (c) 2020, Technische Universitaet Darmstadt, Germany
#
# This software may be modified and distributed under the terms of
# the 3-Clause BSD License. See the LICENSE file in the package base
# directory for details.

# create a temporary copy of the code to build the package
rm -rf tmp_package_build_dir
mkdir -p tmp_package_build_dir
cp -r * tmp_package_build_dir

# modify folder structure to install DiscoPoP to /opt when installing the package
cd tmp_package_build_dir
mkdir opt
mkdir opt/DiscoPoP

mv * opt/DiscoPoP
mv opt/DiscoPoP/DEBIAN .

# add the Version tag to DEBIAN/control.raw to create DEBIAN/control
echo "$(cat DEBIAN/control.raw)" > DEBIAN/control
echo "Version: $(cat opt/DiscoPoP/discopop_library/global_data/version/VERSION)" >> DEBIAN/control
echo "" >> DEBIAN/control

# delete build folder if exists
rm -rf opt/DiscoPoP/build
# delete packages folder if exists
rm -rf opt/DiscoPoP/packages
# delete venv folder if exists
rm -rf opt/DiscoPoP/venv
# cleanup
rm -rf opt/DiscoPoP/tmp_packages_build_dir

# create packages folder
cd ..
mkdir -p packages
# build package
dpkg-deb --build tmp_package_build_dir packages/DiscoPoP.deb
chmod 775 packages/DiscoPoP.deb

# cleanup
rm -rf tmp_package_build_dir
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1 /home/lukas/git/discopop/test/end_to_end/do_all/calls/second_order/preventing_2/src/code.cpp
Loading