From 90d862d0c73ce88dacbb95be212677b6bc0ecaad Mon Sep 17 00:00:00 2001 From: Juraj Michalek Date: Mon, 28 Apr 2014 08:10:46 +0200 Subject: [PATCH] add Gradle Debian Linux packaging --- README.md | 74 +++++++++++++++++-- gradle/05-debian-package/build.gradle | 45 +++++++++++ gradle/05-debian-package/src/hello/c/hello.c | 7 ++ .../src/main/resources/control/conffiles | 1 + .../src/main/resources/control/control | 11 +++ .../src/main/resources/control/postinst | 5 ++ .../src/main/resources/control/postrm | 4 + .../src/main/resources/control/prerm | 6 ++ .../src/main/resources/txt/changelog.txt | 2 + sdl/01-sdl2-init/build.gradle | 9 ++- 10 files changed, 158 insertions(+), 6 deletions(-) create mode 100644 gradle/05-debian-package/build.gradle create mode 100644 gradle/05-debian-package/src/hello/c/hello.c create mode 100644 gradle/05-debian-package/src/main/resources/control/conffiles create mode 100644 gradle/05-debian-package/src/main/resources/control/control create mode 100644 gradle/05-debian-package/src/main/resources/control/postinst create mode 100644 gradle/05-debian-package/src/main/resources/control/postrm create mode 100644 gradle/05-debian-package/src/main/resources/control/prerm create mode 100644 gradle/05-debian-package/src/main/resources/txt/changelog.txt diff --git a/README.md b/README.md index 851d3bb..a805a30 100644 --- a/README.md +++ b/README.md @@ -68,8 +68,72 @@ How to run: make ./helloworld -Gradle ------- +Gradle basics and C plugin +-------------------------- + +### 00-empty-project ### + +Empty gradle project. + +How to run: + + gradle tasks + +### 01-hello-task ### + +Simple task to print string during build. + +How to run: + + gradle tasks + gradle hello + +### 02-c-plugin ### + +Simple usage C plugin. There is no working C code in this example. + +How to run: + + gradle tasks + +### 03-executable ### + +Gradle with C plugin with simple Hello application. + +How to run (Shell): + + gradle mE + cd build/binaries/mainExecutable + ./main + +How to run (PowerShell): + + gradle mE + cd build\binaries\mainExecutable + .\main.exe + +### 04-visua-studio ### + +Gradle C plugin example with support for Visual Studio solution files. + +How to run (PowerShell): + + gradle mainVisualStudio + ii mainExe.sln + +### 05-debian-package ### + +Gradle plugin for packaging Debian/Ubuntu package. Gradle downloads plugin from repository. + +How to run: + + gradle helloExecutable prepare buildDeb + +Debian package is available in directory build. + + +Gradle C++ plugin +----------------- ### 01-hello-muni ### @@ -84,7 +148,7 @@ Note for Visual Studio 2013: Use Gradle at least night build 1.10-20131122230018 How to run: - cd gradle/01-hello-muni + cd gradle-cpp-plugin/01-hello-muni gradle mainExecutable cd build/binaries/mainExecutable ./01-hello-muni @@ -102,7 +166,7 @@ support. How to run: - cd gradle/02-hello-muni-with-gradle-wrapper + cd gradle-cpp-plugin/02-hello-muni-with-gradle-wrapper ./gradlew mainExecutable (or .\gradle.bat mainExecutable for PowerShell) cd build/binaries/mainExecutable ./02-hello-muni-with-gradle-wrapper @@ -114,7 +178,7 @@ This example shows how to update build script to add debug flags for compilers l How to run: - cd gradle/03-hello-muni-with-debug + cd gradle-cpp-plugin/03-hello-muni-with-debug gradle mainExecutable cd build/binaries/mainExecutable ./03-hello-muni-with-debug diff --git a/gradle/05-debian-package/build.gradle b/gradle/05-debian-package/build.gradle new file mode 100644 index 0000000..c4f6766 --- /dev/null +++ b/gradle/05-debian-package/build.gradle @@ -0,0 +1,45 @@ +import org.gradle.api.publish.maven.MavenPublication +buildscript { + repositories { + maven { + url "http://dl.bintray.com/gesellix/gradle-plugins" + } + mavenCentral() + mavenLocal() + } + dependencies { + classpath "de.gesellix:gradle-debian-plugin:12" + } +} + +apply plugin: 'maven' +apply plugin: 'pkg-debian' +apply plugin: 'c' + +version = "1.0.0" + +executables { + hello { + } +} + +task prepare(type: Copy) { + description "Copy files to Linux directory layout" + from "build/binaries/helloExecutable" + into "build/linux/usr/bin" +} + +debian { + packagename = "hello-fimuni" + publications = ['fimuni'] + controlDirectory = "$projectDir/src/main/resources/control" + changelogFile = "$projectDir/src/main/resources/txt/changelog.txt" + + data { + def baseDir = "$buildDir/linux" + dir { + name = baseDir + } + } +} + diff --git a/gradle/05-debian-package/src/hello/c/hello.c b/gradle/05-debian-package/src/hello/c/hello.c new file mode 100644 index 0000000..a15982f --- /dev/null +++ b/gradle/05-debian-package/src/hello/c/hello.c @@ -0,0 +1,7 @@ +#include + +int main(int argc, char** argv){ + printf("Hello FI MUNI!\n"); + return 0; +} + diff --git a/gradle/05-debian-package/src/main/resources/control/conffiles b/gradle/05-debian-package/src/main/resources/control/conffiles new file mode 100644 index 0000000..92ab7db --- /dev/null +++ b/gradle/05-debian-package/src/main/resources/control/conffiles @@ -0,0 +1 @@ +/etc/default/hello-fimuni diff --git a/gradle/05-debian-package/src/main/resources/control/control b/gradle/05-debian-package/src/main/resources/control/control new file mode 100644 index 0000000..a95cde9 --- /dev/null +++ b/gradle/05-debian-package/src/main/resources/control/control @@ -0,0 +1,11 @@ +Source: hello-fimuni +Section: web +Priority: optional +Version: 1.0.0 +Maintainer: Juraj Michalek +Homepage: http://www.ysoft.com/ +Package: hello-fimuni +Architecture: all +Depends: +Description: Hello FI MUNI + Example of Linux packaging for Gradle. diff --git a/gradle/05-debian-package/src/main/resources/control/postinst b/gradle/05-debian-package/src/main/resources/control/postinst new file mode 100644 index 0000000..595ce13 --- /dev/null +++ b/gradle/05-debian-package/src/main/resources/control/postinst @@ -0,0 +1,5 @@ +#!/bin/sh +set -e + +# Post installation script - executed at the last phase of installation + diff --git a/gradle/05-debian-package/src/main/resources/control/postrm b/gradle/05-debian-package/src/main/resources/control/postrm new file mode 100644 index 0000000..d84b328 --- /dev/null +++ b/gradle/05-debian-package/src/main/resources/control/postrm @@ -0,0 +1,4 @@ +#!/bin/sh +set -e + +# Post remove script diff --git a/gradle/05-debian-package/src/main/resources/control/prerm b/gradle/05-debian-package/src/main/resources/control/prerm new file mode 100644 index 0000000..5931a63 --- /dev/null +++ b/gradle/05-debian-package/src/main/resources/control/prerm @@ -0,0 +1,6 @@ +#!/bin/sh + +set -e + +# Pre-uninstallation script + diff --git a/gradle/05-debian-package/src/main/resources/txt/changelog.txt b/gradle/05-debian-package/src/main/resources/txt/changelog.txt new file mode 100644 index 0000000..139597f --- /dev/null +++ b/gradle/05-debian-package/src/main/resources/txt/changelog.txt @@ -0,0 +1,2 @@ + + diff --git a/sdl/01-sdl2-init/build.gradle b/sdl/01-sdl2-init/build.gradle index 382ab55..1cedd18 100644 --- a/sdl/01-sdl2-init/build.gradle +++ b/sdl/01-sdl2-init/build.gradle @@ -20,7 +20,8 @@ executables { binaries.all { if (toolChain in VisualCpp) { cCompiler.args "/MD" - linker.args "/SUBSYSTEM:CONSOLE", "/LIBPATH:../build/lib/", "SDL2main.lib", "SDL2.lib" + linker.args "/SUBSYSTEM:CONSOLE", "/LIBPATH:../build/lib/", + "SDL2main.lib", "SDL2.lib" } else if (toolChain in Gcc) { linker.args "-lSDL2" } @@ -28,3 +29,9 @@ executables { } } +task prepare(type: Copy) { + description "Copy DLL dependencies" + from "../build/lib/" + into "build/binaries/mainExecutable" +} +