diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bee5e9422..b5e78371d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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 @@ -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" diff --git a/.gitignore b/.gitignore index 6ad66132a..85163fd72 100644 --- a/.gitignore +++ b/.gitignore @@ -136,6 +136,9 @@ venv.bak/ *.a *.lib +# Packages +packages/ + # Executables *.exe *.out diff --git a/CMakeLists.txt b/CMakeLists.txt index b798c087d..d438a2127 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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() diff --git a/DEBIAN/control.raw b/DEBIAN/control.raw new file mode 100755 index 000000000..b67b54c0c --- /dev/null +++ b/DEBIAN/control.raw @@ -0,0 +1,6 @@ +Package: discopop +Maintainer: Lukas Rothenberger +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. diff --git a/DEBIAN/postinst b/DEBIAN/postinst new file mode 100755 index 000000000..ab067e4f7 --- /dev/null +++ b/DEBIAN/postinst @@ -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" diff --git a/DEBIAN/postrm b/DEBIAN/postrm new file mode 100755 index 000000000..41de91dbe --- /dev/null +++ b/DEBIAN/postrm @@ -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" diff --git a/DEBIAN/preinst b/DEBIAN/preinst new file mode 100755 index 000000000..e69de29bb diff --git a/DEBIAN/prerm b/DEBIAN/prerm new file mode 100755 index 000000000..e69de29bb diff --git a/README.md b/README.md index 51ccc421a..2831e632d 100644 --- a/README.md +++ b/README.md @@ -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 [discopop-support@lists.parallel.informatik.tu-darmstadt.de](mailto:discopop-support@lists.parallel.informatik.tu-darmstadt.de). + +### Prerequisites +- Download `.deb` package from [latest Release](https://github.com/discopop-project/discopop/releases/latest) +### Example ``` -# setup DiscoPoP -git clone git@github.com:discopop-project/discopop.git -cd discopop -mkdir build && cd build -DP_BUILD=$(pwd) -cmake .. && make +# install package +sudo apt install ./.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" diff --git a/discopop_library/global_data/version/VERSION b/discopop_library/global_data/version/VERSION index fcdb2e109..1454f6ed4 100644 --- a/discopop_library/global_data/version/VERSION +++ b/discopop_library/global_data/version/VERSION @@ -1 +1 @@ -4.0.0 +4.0.1 diff --git a/docs/How_to_contribute.md b/docs/How_to_contribute.md index 3c35cabb7..c44138358 100644 --- a/docs/How_to_contribute.md +++ b/docs/How_to_contribute.md @@ -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 @@ -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 diff --git a/docs/setup/discopop.md b/docs/setup/discopop.md index 521d1130c..d975dd30f 100644 --- a/docs/setup/discopop.md +++ b/docs/setup/discopop.md @@ -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 ./.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 @@ -47,5 +56,6 @@ where `` 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 +venv/bin/python -m unittest -v ``` diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index f0f49f6da..b077f7482 100644 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -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() diff --git a/scripts/dev/check-license.sh b/scripts/dev/check-license.sh index 28af2511c..8673f4ba1 100755 --- a/scripts/dev/check-license.sh +++ b/scripts/dev/check-license.sh @@ -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="" diff --git a/scripts/dev/create_package.sh b/scripts/dev/create_package.sh new file mode 100755 index 000000000..a3a862d55 --- /dev/null +++ b/scripts/dev/create_package.sh @@ -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 diff --git a/test/end_to_end/do_all/calls/second_order/preventing_2/src/FileMapping.txt b/test/end_to_end/do_all/calls/second_order/preventing_2/src/FileMapping.txt new file mode 100644 index 000000000..e0d0aacbe --- /dev/null +++ b/test/end_to_end/do_all/calls/second_order/preventing_2/src/FileMapping.txt @@ -0,0 +1 @@ +1 /home/lukas/git/discopop/test/end_to_end/do_all/calls/second_order/preventing_2/src/code.cpp