Skip to content

Commit 4cb2d72

Browse files
committed
packages CHANGE major update
1 parent e3db432 commit 4cb2d72

16 files changed

Lines changed: 190 additions & 176 deletions

CMakeLists.txt

Lines changed: 4 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
cmake_minimum_required(VERSION 2.6)
22

33
project(libnetconf2 C)
4+
set(LIBNETCONF2_DESC "NETCONF library in C providing API for both clients and servers.")
45

56
# include custom Modules
67
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules/")
@@ -72,77 +73,6 @@ if(ENABLE_DNSSEC AND NOT ENABLE_SSH)
7273
set(ENABLE_DNSSEC OFF)
7374
endif()
7475

75-
# package options
76-
find_program(DEB_BUILDER NAMES debuild)
77-
find_program(RPM_BUILDER NAMES rpmbuild)
78-
79-
if(NOT DEFINED ENV{TRAVIS_BRANCH})
80-
execute_process(COMMAND "git" "rev-parse" "--abbrev-ref" "HEAD"
81-
OUTPUT_VARIABLE GIT_BRANCH
82-
OUTPUT_STRIP_TRAILING_WHITESPACE
83-
ERROR_QUIET
84-
)
85-
if(NOT GIT_BRANCH)
86-
set(ENV{TRAVIS_BRANCH} "master")
87-
else()
88-
if(GIT_BRANCH MATCHES "master|devel")
89-
set(ENV{TRAVIS_BRANCH} ${GIT_BRANCH})
90-
else()
91-
set(ENV{TRAVIS_BRANCH} "master")
92-
endif()
93-
endif()
94-
95-
set(GIT_BRANCH $ENV{TRAVIS_BRANCH}) # NOTE: used for configure_file too
96-
endif()
97-
98-
if(GIT_BRANCH STREQUAL master)
99-
set(PACKAGE_NAME "libnetconf2")
100-
set(BRANCH "master")
101-
set(BUILD_TYPE "Package")
102-
set(CONFLICT_PACKAGE_NAME "libnetconf2-experimental")
103-
set(PACKAGE_PART_NAME "")
104-
else()
105-
set(PACKAGE_NAME "libnetconf2-experimental")
106-
set(BRANCH "devel")
107-
set(BUILD_TYPE "Debug")
108-
set(CONFLICT_PACKAGE_NAME "libnetconf2")
109-
set(PACKAGE_PART_NAME "-experimental")
110-
endif()
111-
# change version in config files
112-
configure_file(${PROJECT_SOURCE_DIR}/packages/libnetconf2.spec.in ${PROJECT_BINARY_DIR}/build-packages/libnetconf2.spec)
113-
configure_file(${PROJECT_SOURCE_DIR}/packages/libnetconf2.dsc.in ${PROJECT_BINARY_DIR}/build-packages/libnetconf2.dsc)
114-
configure_file(${PROJECT_SOURCE_DIR}/packages/debian.control.in ${PROJECT_BINARY_DIR}/build-packages/debian.control @ONLY)
115-
configure_file(${PROJECT_SOURCE_DIR}/packages/debian.rules.in ${PROJECT_BINARY_DIR}/build-packages/debian.rules)
116-
configure_file(${PROJECT_SOURCE_DIR}/packages/debian.libnetconf2-dev.install
117-
${PROJECT_BINARY_DIR}/build-packages/debian.libnetconf2${PACKAGE_PART_NAME}-dev.install COPYONLY)
118-
configure_file(${PROJECT_SOURCE_DIR}/packages/debian.libnetconf2.install
119-
${PROJECT_BINARY_DIR}/build-packages/debian.libnetconf2${PACKAGE_PART_NAME}.install COPYONLY)
120-
configure_file(${PROJECT_SOURCE_DIR}/packages/debian.python3-netconf2.install
121-
${PROJECT_BINARY_DIR}/build-packages/debian.python3-netconf2${PACKAGE_PART_NAME}.install COPYONLY)
122-
123-
if(NOT DEB_BUILDER)
124-
message(WARNING "Missing tools (devscripts, debhelper package) for building deb package.\nYou won't be able to generate deb package from source code.\nCompiling libnetconf2 should still works fine.")
125-
else()
126-
# target for local build deb package
127-
add_custom_target(build-deb
128-
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
129-
COMMAND build-packages/local-deb.sh
130-
)
131-
configure_file(${PROJECT_SOURCE_DIR}/packages/local-deb.sh.in ${PROJECT_BINARY_DIR}/build-packages/local-deb.sh @ONLY)
132-
endif()
133-
134-
if(NOT RPM_BUILDER)
135-
message(WARNING "Missing tools (rpm package) for building rpm package. \nYou won't be able to generate rpm package from source code.\nCompiling libnetconf2 should still work fine.")
136-
else()
137-
# target for local build rpm package
138-
string(REPLACE ${PROJECT_SOURCE_DIR} "." EXCLUDE_BUILD_DIR ${PROJECT_BINARY_DIR})
139-
add_custom_target(build-rpm
140-
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
141-
COMMAND build-packages/local-rpm.sh
142-
)
143-
configure_file(${PROJECT_SOURCE_DIR}/packages/local-rpm.sh.in ${PROJECT_BINARY_DIR}/build-packages/local-rpm.sh @ONLY)
144-
endif()
145-
14676
include_directories(${PROJECT_BINARY_DIR}/src)
14777

14878
# source files
@@ -292,6 +222,9 @@ if(ENABLE_PYTHON)
292222
add_subdirectory(python)
293223
endif()
294224

225+
# packages
226+
add_subdirectory(packages)
227+
295228
# install library
296229
install(TARGETS netconf2 DESTINATION ${CMAKE_INSTALL_LIBDIR})
297230

LICENSE

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright (c) 2015-2016, CESNET
1+
Copyright (c) 2015-2020, CESNET
22
All rights reserved.
33

44
Redistribution and use in source and binary forms, with or without
@@ -25,4 +25,3 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
2525
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2626
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2727
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28-

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,14 @@ This means that when only stable official releases are to be used, either `maste
4343
If all the latest bugfixes should be applied, `devel` branch is the one to be used. Note that whenever **a new issue is created**
4444
and it occurs on the `master` branch, the **first response will likely be** to use `devel` before any further provided support.
4545

46+
## Packages
47+
48+
We are using openSUSE Build Service to automaticaly prepare binary packages for number of GNU/Linux distros.
49+
The [libnetconf2](https://software.opensuse.org//download.html?project=home%3Aliberouter&package=libnetconf2)
50+
packages are always build from current `master` branch (latest release). If you are interested in any other packages
51+
(such as *devel*), you can browse
52+
[all packages](https://download.opensuse.org/repositories/home:/liberouter/) from our repository.
53+
4654
## libnetconf vs libnetconf2
4755

4856
**libnetconf2** is being developed with experiences gained from the development

packages/CMakeLists.txt

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
set(PACKAGE "libnetconf2")
2+
set(PACKAGE_BRIEF "libnetconf2 library")
3+
set(PACKAGE_DESC ${LIBNETCONF2_DESC})
4+
set(PACKAGE_DBG_DESC "libnetconf2 library debug symbols.")
5+
set(PACKAGE_DEV_BRIEF "Headers of libnetconf2 library")
6+
set(PACKAGE_DEV_DESC "libnetconf2 library headers for C.")
7+
8+
set(GITHUB_URL "https://github.com/cesnet/libnetconf2")
9+
10+
find_program(DEB_BUILDER NAMES debuild)
11+
find_program(RPM_BUILDER NAMES rpmbuild)
12+
13+
# setup package build
14+
configure_file(${PROJECT_SOURCE_DIR}/packages/${PACKAGE}.spec.in ${PROJECT_BINARY_DIR}/build-packages/${PACKAGE}.spec)
15+
configure_file(${PROJECT_SOURCE_DIR}/packages/${PACKAGE}.dsc.in ${PROJECT_BINARY_DIR}/build-packages/${PACKAGE}.dsc)
16+
configure_file(${PROJECT_SOURCE_DIR}/packages/debian.control.in ${PROJECT_BINARY_DIR}/build-packages/debian.control @ONLY)
17+
configure_file(${PROJECT_SOURCE_DIR}/packages/debian.rules.in ${PROJECT_BINARY_DIR}/build-packages/debian.rules)
18+
configure_file(${PROJECT_SOURCE_DIR}/packages/debian.compat
19+
${PROJECT_BINARY_DIR}/build-packages/debian.compat COPYONLY)
20+
configure_file(${PROJECT_SOURCE_DIR}/packages/debian.copyright
21+
${PROJECT_BINARY_DIR}/build-packages/debian.copyright COPYONLY)
22+
configure_file(${PROJECT_SOURCE_DIR}/packages/${PACKAGE}.rpmlintrc
23+
${PROJECT_BINARY_DIR}/build-packages/${PACKAGE}.rpmlintrc COPYONLY)
24+
configure_file(${PROJECT_SOURCE_DIR}/packages/debian.${PACKAGE}.install
25+
${PROJECT_BINARY_DIR}/build-packages/debian.${PACKAGE}.install COPYONLY)
26+
configure_file(${PROJECT_SOURCE_DIR}/packages/debian.${PACKAGE}-dev.install
27+
${PROJECT_BINARY_DIR}/build-packages/debian.${PACKAGE}-dev.install COPYONLY)
28+
29+
if(NOT DEB_BUILDER)
30+
message(STATUS "Missing tools (devscripts, debhelper package) for building DEB package.")
31+
else()
32+
# target for local build deb package
33+
message(STATUS "To build local DEB package, use \"build-deb\" target.")
34+
add_custom_target(build-deb
35+
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
36+
COMMAND build-packages/local-deb.sh
37+
)
38+
configure_file(${PROJECT_SOURCE_DIR}/packages/local-deb.sh.in ${PROJECT_BINARY_DIR}/build-packages/local-deb.sh @ONLY)
39+
endif()
40+
41+
if(NOT RPM_BUILDER)
42+
message(STATUS "Missing tools (rpm package) for building RPM package.")
43+
else()
44+
# target for local build rpm package
45+
message(STATUS "To build local RPM package, use \"build-rpm\" target.")
46+
string(REPLACE ${PROJECT_SOURCE_DIR} "." EXCLUDE_BUILD_DIR ${PROJECT_BINARY_DIR})
47+
add_custom_target(build-rpm
48+
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}
49+
COMMAND build-packages/local-rpm.sh
50+
)
51+
configure_file(${PROJECT_SOURCE_DIR}/packages/local-rpm.sh.in ${PROJECT_BINARY_DIR}/build-packages/local-rpm.sh @ONLY)
52+
endif()

packages/create-package.sh

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
11
#!/usr/bin/env bash
22

3+
package="libnetconf2"
4+
url="https://github.com/cesnet/libnetconf2"
5+
36
if [ "$TRAVIS_PULL_REQUEST" == "true" -o "$TRAVIS_EVENT_TYPE" != "cron" ] ; then
47
exit 0
58
fi
9+
10+
#install OSC
11+
sudo apt-get install -y osc
12+
613
# check osb_user and osb_pass
714
if [ -z "${osb_user}" -o -z "${osb_pass}" ]; then
815
exit 0
@@ -11,43 +18,37 @@ fi
1118
# fill username and password for opensuse build and downlaod last package information
1219
echo -e "[general]\napiurl = https://api.opensuse.org\n\n[https://api.opensuse.org]\nuser = ${osb_user}\npass = ${osb_pass}" >~/.oscrc
1320
cd ./build
14-
if [ $TRAVIS_BRANCH == "devel" ]; then
15-
package="home:liberouter/libnetconf2-experimental"
16-
name="libnetconf2-experimental"
17-
else
18-
package="home:liberouter/libnetconf2"
19-
name="libnetconf2"
20-
fi
21+
2122
osc checkout home:liberouter
22-
cp $package/libnetconf2.spec $package/debian.changelog home:liberouter
23-
cp build-packages/* $package
24-
cd $package
23+
cp home:liberouter/$package/$package.spec home:liberouter/$package/debian.changelog home:liberouter
24+
cp build-packages/debian* build-packages/$package* home:liberouter/$package
25+
cd home:liberouter/$package
2526

2627
# check versions
27-
VERSION=$(cat libnetconf2.spec | grep "Version: " | awk '{print $NF}')
28-
OLDVERSION=$(cat ../libnetconf2.spec | grep "Version: " | awk '{print $NF}')
28+
VERSION=$(cat $package.spec | grep "Version: " | awk '{print $NF}')
29+
OLDVERSION=$(cat ../$package.spec | grep "Version: " | awk '{print $NF}')
2930
if [ -z "$FORCEVERSION" -a "$VERSION" == "$OLDVERSION" ]; then
3031
exit 0
3132
fi
3233

3334
# create new changelog and paste old changelog
3435
if [ "$VERSION" != "$OLDVERSION" ]; then
3536
logtime=$(git log -i --grep="VERSION .* $OLDVERSION" | grep "Date: " | sed 's/Date:[ ]*//')
36-
echo -e "$name ($VERSION) stable; urgency=low\n" >debian.changelog
37+
echo -e "$package ($VERSION) stable; urgency=low\n" >debian.changelog
3738
git log --since="$logtime" --pretty=format:" * %s (%aN)%n" | grep "BUGFIX\|CHANGE\|FEATURE" >>debian.changelog
3839
git log -1 --pretty=format:"%n -- %aN <%aE> %aD%n" >>debian.changelog
3940
echo -e "\n" >>debian.changelog
4041
cat ../debian.changelog >>debian.changelog
4142
fi
4243

4344
if [ "$VERSION" != "$OLDVERSION" ]; then
44-
git log -1 --date=format:'%a %b %d %Y' --pretty=format:"* %ad %aN <%aE>" | tr -d "\n" >>libnetconf2.spec
45-
echo " $VERSION" >>libnetconf2.spec
46-
git log --since="$logtime" --pretty=format:"- %s (%aN)" | grep "BUGFIX\|CHANGE\|FEATURE" >>libnetconf2.spec
47-
echo -e "\n" >>libnetconf2.spec
45+
git log -1 --date=format:'%a %b %d %Y' --pretty=format:"* %ad %aN <%aE>" | tr -d "\n" >>$package.spec
46+
echo " $VERSION" >>$package.spec
47+
git log --since="$logtime" --pretty=format:"- %s (%aN)" | grep "BUGFIX\|CHANGE\|FEATURE" >>$package.spec
48+
echo -e "\n" >>$package.spec
4849
fi
49-
cat ../libnetconf2.spec | sed -e '1,/%changelog/d' >>libnetconf2.spec
50+
cat ../$package.spec | sed -e '1,/%changelog/d' >>$package.spec
5051

5152
# download source and update to opensuse build
52-
wget "https://github.com/CESNET/libnetconf2/archive/$TRAVIS_BRANCH.tar.gz" -O $TRAVIS_BRANCH.tar.gz
53+
wget "${url}/archive/master.tar.gz" -O master.tar.gz
5354
osc commit -m travis-update

packages/debian.compat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
9

packages/debian.control.in

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,24 @@
1-
Source: @PACKAGE_NAME@
2-
Maintainer: CESNET <rkrejci@cesnet.cz>
1+
Source: @PACKAGE@
2+
Maintainer: CESNET <mvasko@cesnet.cz>
33
Priority: extra
44
Standards-Version: 3.8.2
55
Build-Depends: debhelper (>= 9), gcc
6-
Homepage: https://github.com/CESNET/libnetconf2
6+
Homepage: @GITHUB_URL@
77

8-
Package: @PACKAGE_NAME@
9-
Depends: libyang@PACKAGE_PART_NAME@, libssh-4 (>= 0.7.1), ${shlibs:Depends}
10-
Conflicts: @CONFLICT_PACKAGE_NAME@
8+
Package: @PACKAGE@
9+
Depends: libyang, libssh-4 (>= 0.7.1), libssh-4 (<< 0.9.3) | libssh-4 (>> 0.9.4), ${shlibs:Depends}
1110
Section: libs
1211
Architecture: any
13-
Description: Libnetconf2 is a NETCONF library in C intended for building NETCONF clients and servers.
12+
Description: @PACKAGE_DESC@
1413

15-
Package: @PACKAGE_NAME@-dev
16-
Depends: libyang@PACKAGE_PART_NAME@-dev
14+
Package: @PACKAGE@-dev
15+
Depends: libyang-dev, @PACKAGE@ (=@LIBNETCONF2_VERSION@)
1716
Section: libdevel
1817
Architecture: any
19-
Description: Headers for libnetconf2 library.
18+
Description: @PACKAGE_DEV_DESC@
2019

21-
Package: @PACKAGE_NAME@-dbg
22-
Depends: @PACKAGE_NAME@ (= @LIBNETCONF2_VERSION@)
20+
Package: @PACKAGE@-dbg
21+
Depends: @PACKAGE@ (=@LIBNETCONF2_VERSION@)
2322
Section: debug
2423
Architecture: any
25-
Description: Debug symbols for libnetconf2 library.
26-
27-
Package: python3-netconf2@PACKAGE_PART_NAME@
28-
Depends: @PACKAGE_NAME@ (= @LIBNETCONF2_VERSION@)
29-
Section: libs
30-
Architecture: any
31-
Description: Bindings of libyang library to python3 language.
32-
33-
Package: python3-netconf2@PACKAGE_PART_NAME@-dbg
34-
Depends: python3-netconf2@PACKAGE_PART_NAME@ (= @LIBNETCONF2_VERSION@)
35-
Section: debug
36-
Architecture: any
37-
Description: Debug symbols of python3 bidings of libnetconf2 library.
24+
Description: @PACKAGE_DBG_DESC@

packages/debian.copyright

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
Copyright (c) 2015-2020, CESNET
2+
All rights reserved.
3+
4+
Redistribution and use in source and binary forms, with or without
5+
modification, are permitted provided that the following conditions are met:
6+
7+
* Redistributions of source code must retain the above copyright notice, this
8+
list of conditions and the following disclaimer.
9+
10+
* Redistributions in binary form must reproduce the above copyright notice,
11+
this list of conditions and the following disclaimer in the documentation
12+
and/or other materials provided with the distribution.
13+
14+
* Neither the name of libnetconf2 nor the names of its
15+
contributors may be used to endorse or promote products derived from
16+
this software without specific prior written permission.
17+
18+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

packages/debian.python3-netconf2.install

Lines changed: 0 additions & 1 deletion
This file was deleted.

packages/debian.rules.in

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,10 @@ export DH_VERBOSE=1
77
dh $@
88

99
override_dh_strip:
10-
dh_strip -p@PACKAGE_NAME@ --dbg-package=@PACKAGE_NAME@-dbg
11-
dh_strip -ppython3-netconf2@PACKAGE_PART_NAME@ --dbg-package=python3-netconf2@PACKAGE_PART_NAME@-dbg
10+
dh_strip -p@PACKAGE@ --dbg-package=@PACKAGE@-dbg
1211

1312
override_dh_auto_configure:
14-
cmake -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_PYTHON=ON -DCMAKE_BUILD_TYPE="@BUILD_TYPE@" .
13+
cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE="Package" .
1514

1615
override_dh_auto_test:
1716
ctest --output-on-failure

0 commit comments

Comments
 (0)