Skip to content

Instantly share code, notes, and snippets.

@blockspacer
Forked from Neisoweli/REPORT.md
Created June 5, 2020 08:42
Show Gist options
  • Save blockspacer/421b6ec921ddc7f95f3f661f71986540 to your computer and use it in GitHub Desktop.
Save blockspacer/421b6ec921ddc7f95f3f661f71986540 to your computer and use it in GitHub Desktop.
Lab08.Report

Laboratory work VIII Build Status

Данная лабораторная работа посвещена изучению средств пакетирования на примере CPack

$ open https://cmake.org/Wiki/CMake:CPackPackageGenerators

Tasks

  • 1. Создать публичный репозиторий с названием lab08 на сервисе GitHub
  • 2. Выполнить инструкцию учебного материала
  • 3. Ознакомиться со ссылками учебного материала
  • 4. Составить отчет и отправить ссылку личным сообщением в Slack

Tutorial

Устанавливаем переменные окружения и короткие имена для используемых утилит

$ export GITHUB_USERNAME=<имя_пользователя>
$ export GITHUB_EMAIL=<адрес_почтового_ящика>
$ alias edit=<nano|vi|vim|subl>
$ alias gsed=sed # for *-nix system

Инициализируем ранее созданный скрипт

$ cd ${GITHUB_USERNAME}/workspace
$ pushd .
$ source scripts/activate

Скачиваем данные из репозитория

$ git clone https://github.com/${GITHUB_USERNAME}/Labs projects/lab08
$ cd projects/lab08
$ git checkout lab07
$ git checkout -b lab08

Производим изменения в CMakeLists.txt для установки нумерации версий проекта

$ gsed -i '/project(print)/a\
set(PRINT_VERSION_STRING "v${PRINT_VERSION}")
' CMakeLists.txt
$ gsed -i '/project(print)/a\ 
set(PRINT_VERSION \
\${PRINT_VERSION_MAJOR}.\${PRINT_VERSION_MINOR}.\${PRINT_VERSION_PATCH}.\${PRINT_VERSION_TWEAK})
' CMakeLists.txt
$ gsed -i '/project(print)/a\
set(PRINT_VERSION_TWEAK 0)
' CMakeLists.txt
$ gsed -i '/project(print)/a\
set(PRINT_VERSION_PATCH 0)
' CMakeLists.txt
$ gsed -i '/project(print)/a\
set(PRINT_VERSION_MINOR 1)
' CMakeLists.txt
$ gsed -i '/project(print)/a\
set(PRINT_VERSION_MAJOR 0)
' CMakeLists.txt

Создаем файлы DESCRIOTION и ChangeLog, и заносим в последний о внесенных изменений в проект

$ touch DESCRIPTION && edit DESCRIPTION
$ touch ChangeLog.md
$ export DATE="`LANG=en_US date +'%a %b %d %Y'`"
$ cat > ChangeLog.md <<EOF
* ${DATE} ${GITHUB_USERNAME} <${GITHUB_EMAIL}> 0.1.0.0
- Initial RPM release
EOF

Создаем конфигурационный файл CPackConfig.cmake

$ cat > CPackConfig.cmake <<EOF
include(InstallRequiredSystemLibraries)
EOF

Вносим требуемые параметры, а именно контактные данные, версию проекта MAJOR, TWEAK, PATCH, MINOR, путь к файлу описания и общее описание проекта

$ cat >> CPackConfig.cmake <<EOF
set(CPACK_PACKAGE_CONTACT ${GITHUB_EMAIL})
set(CPACK_PACKAGE_VERSION_MAJOR \${PRINT_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR \${PRINT_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH \${PRINT_VERSION_PATCH})
set(CPACK_PACKAGE_VERSION_TWEAK \${PRINT_VERSION_TWEAK}) 
set(CPACK_PACKAGE_VERSION \${PRINT_VERSION})
set(CPACK_PACKAGE_DESCRIPTION_FILE \${CMAKE_CURRENT_SOURCE_DIR}/DESCRIPTION)
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "static c++ library for printing")
EOF

Устанавливаем пути к файлам LICENSE и README.md

$ cat >> CPackConfig.cmake <<EOF

set(CPACK_RESOURCE_FILE_LICENSE \${CMAKE_CURRENT_SOURCE_DIR}/LICENSE)
set(CPACK_RESOURCE_FILE_README \${CMAKE_CURRENT_SOURCE_DIR}/README.md)
EOF

Далее устанавливаем параметры для RPM и DEB сборки пакета.

$ # устанавливаем параметры для RPM: наименование, тип лицензии, ссылка на репозиторий, путь к лог-файлу.
$ cat >> CPackConfig.cmake <<EOF

set(CPACK_RPM_PACKAGE_NAME "print-devel")
set(CPACK_RPM_PACKAGE_LICENSE "MIT")
set(CPACK_RPM_PACKAGE_GROUP "print")
set(CPACK_RPM_PACKAGE_URL "https://github.com/${GITHUB_USERNAME}/Labs")
set(CPACK_RPM_CHANGELOG_FILE \${CMAKE_CURRENT_SOURCE_DIR}/ChangeLog.md)
set(CPACK_RPM_PACKAGE_RELEASE 1)
EOF
$ # устанавливаем параметры для DEB: наименование, ссылка на документацию, версию cmake.
$ cat >> CPackConfig.cmake <<EOF

set(CPACK_DEBIAN_PACKAGE_NAME "libprint-dev")
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://${GITHUB_USERNAME}.github.io/lab07")
set(CPACK_DEBIAN_PACKAGE_PREDEPENDS "cmake >= 3.0")
set(CPACK_DEBIAN_PACKAGE_RELEASE 1)
EOF

Заносим в конфигурационный файл подключение утилиты CPack

$ cat >> CPackConfig.cmake <<EOF

include(CPack)
EOF

Вносим изменения в CMakeLists.txt для подключения конфигурационного файла CPackConfig.cmake

$ cat >> CMakeLists.txt <<EOF

include(CPackConfig.cmake)
EOF

Редактируем README.md

$ gsed -i 's/lab07/lab08/g' README.md

Отправляем все изменения в репозиторий

$ git add .
$ git commit -m"added cpack config"
$ git push origin master

Инициализируем сборку проекта с помощью TravisCI

$ travis login --auto
$ travis enable

Производим сборку проекта с помощью утилит CMake и CPack

$ cmake -H. -B_build
$ cmake --build _build
$ cd _build
$ cpack -G "TGZ" # собираем проект с расширением TGZ
$ cpack -G "RPM"
$ cpack -G "DEB"
$ cpack -G "NSIS"
$ cpack -G "DragNDrop"
$ cd ..

Собираем проект

$ cmake -H. -B_build -DCPACK_GENERATOR="TGZ"
$ cmake --build _build --target package

Переносим получившийся архив .tar.gz в директорию artifacts и визуализируем ее структуру

$ mkdir artifacts
$ mv _build/*.tar.gz artifacts
$ tree artifacts

Links

Copyright (c) 2017 Братья Вершинины
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment