Browse Source

ci: Rename debian package to libopen62541 and correct debian recipe

Stefan Profanter 4 years ago
parent
commit
044140acbe

+ 1 - 1
.travis.yml

@@ -356,7 +356,7 @@ after_failure: |
 deploy:
   provider: releases
   api_key:
-    # Uses token from user open62541-travis-release (managed by @Pro)
+    # Uses token from user open62541-travis-release (managed by @Pro). Sets GITAUTH
     secure: dtn6ayBGoWzeVMM6xYpSRZly1XOhS/2jdiwEHd0hYZIr0dNq18CxTiqbGrUwW1JsSiXoHaGSZhUVr06O1P/tfC3Ma6i7ugyun+yXz6FdZiwirjURI8HQe+XwR4Ui3hqgQSOHLMK/xtOkjM28AN1jg9u3//Zep69xJVIGAqNT0bE=
   file:
     - open62541-win32.zip

+ 5 - 5
debian/control

@@ -12,25 +12,25 @@ Homepage: https://open62541.org/
 Vcs-Git: https://github.com/open62541/open62541.git
 Vcs-Browser: https://github.com/open62541/open62541
 
-Package: open62541-dev
+Package: libopen62541-<soname>-dev
 Section: libdevel
 Architecture: any
 Multi-Arch: same
-Depends: open62541 (= ${binary:Version}), ${misc:Depends}
+Depends: libopen62541-<soname> (= ${binary:Version}), ${misc:Depends}
 Description: Development header files for open62541
  open62541 is an open source C (C99) implementation of the OPC UA standard
 
-Package: libopen62541-1
+Package: libopen62541-<soname>
 Architecture: any
 Multi-Arch: same
 Depends: ${shlibs:Depends}, ${misc:Depends}
 Description: Open source implementation of OPC UA (OPC Unified Architecture) aka IEC 62541
  open62541 is an open source C (C99) implementation of the OPC UA standard
 
-Package: open62541-dbg
+Package: libopen62541-<soname>-dbg
 Section: debug
 Architecture: any
 Priority: extra
-Depends: open62541 (= ${binary:Version}), ${misc:Depends}
+Depends: libopen62541-<soname> (= ${binary:Version}), ${misc:Depends}
 Description: Debugging symbols for open62541
  open62541 is an open source C (C99) implementation of the OPC UA standard

debian/open62541-dev.install → debian/libopen62541-dev.install-template


debian/libopen62541-1.install → debian/libopen62541.install-template


+ 1 - 1
debian/rules

@@ -11,7 +11,7 @@ override_dh_auto_test:
 	dh_auto_test -- ARGS+=--output-on-failure
 
 override_dh_strip:
-	dh_strip --dbg-package=open62541-dbg
+	dh_strip --dbg-package=libopen62541-1-dbg
 
 %:
 	dh $@ --buildsystem=cmake --parallel

+ 0 - 48
debian/update_changelog.py

@@ -1,48 +0,0 @@
-#!/usr/bin/env python
-
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-import subprocess
-import os
-import re
-from email.utils import formatdate
-
-git_describe_version = subprocess.check_output(["git", "describe", "--tags", "--dirty", "--match", "v*"]).decode('utf-8').strip()
-
-# v1.2
-# v1.2.3
-# v1.2.3-rc1
-# v1.2.3-rc1-dirty
-# v1.2.3-5-g4538abcd
-# v1.2.3-5-g4538abcd-dirty
-# git_describe_version = "v1.2.3"
-
-m = re.match(r"^v([0-9]+)(\.[0-9]+)?(\.[0-9]+)?(-(.*)+)?$", git_describe_version)
-version_major = m.group(1) if m.group(1) is not None else "0"
-version_minor = m.group(2).replace(".", "") if m.group(2) is not None else "0"
-version_patch = m.group(3).replace(".", "") if m.group(3) is not None else "0"
-version_label = m.group(4) if m.group(4) is not None else ""
-#print("major {} minor {} patch {} label {}".format(version_major, version_minor, version_patch, version_label))
-
-debian_distribution = "unstable"
-if version_label is not "":
-    debian_distribution = "UNRELEASED"
-
-dirpath = os.path.dirname(os.path.realpath(__file__))
-changelog_file = os.path.join(dirpath, "changelog")
-
-# remove leading 'v'
-changelog_version = git_describe_version[1:] if git_describe_version[0] == 'v' else git_describe_version
-
-with open(changelog_file, 'r') as original: data = original.read()
-with open(changelog_file, 'w') as modified:
-    new_entry = """open62541 ({version}) {distribution}; urgency=medium
-
-  * Full changelog is available here: https://github.com/open62541/open62541/blob/master/CHANGELOG
-
- -- open62541 Team <open62541-core@googlegroups.com>  {time}
-""".format(version=changelog_version, time=formatdate(), distribution = debian_distribution)
-
-    modified.write(new_entry + "\n" + data)

+ 9 - 0
doc/installing.rst

@@ -78,3 +78,12 @@ Debian packages can be found in our official PPA:
 
  * Daily Builds (based on master branch): https://launchpad.net/~open62541-team/+archive/ubuntu/daily
  * Release Builds (starting with Version 0.4): https://launchpad.net/~open62541-team/+archive/ubuntu/ppa
+
+Install them with:
+
+
+.. code-block:: bash
+
+    sudo add-apt-repository ppa:open62541-team/ppa
+    sudo apt-get update
+    sudo apt-get install libopen62541-dev

+ 96 - 0
tools/prepare_packaging.py

@@ -0,0 +1,96 @@
+#!/usr/bin/env python
+
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+import subprocess
+import os
+import re
+from email.utils import formatdate
+
+
+dirpath = os.path.join(os.path.dirname(os.path.realpath(__file__)),"..")
+
+git_describe_version = subprocess.check_output(["git", "describe", "--tags", "--dirty", "--match", "v*"]).decode('utf-8').strip()
+
+# v1.2
+# v1.2.3
+# v1.2.3-rc1
+# v1.2.3-rc1-dirty
+# v1.2.3-5-g4538abcd
+# v1.2.3-5-g4538abcd-dirty
+# git_describe_version = "v1.2.3"
+
+m = re.match(r"^v([0-9]+)(\.[0-9]+)?(\.[0-9]+)?(-(.*)+)?$", git_describe_version)
+version_major = m.group(1) if m.group(1) is not None else "0"
+version_minor = m.group(2).replace(".", "") if m.group(2) is not None else "0"
+version_patch = m.group(3).replace(".", "") if m.group(3) is not None else "0"
+version_label = m.group(4) if m.group(4) is not None else ""
+#print("major {} minor {} patch {} label {}".format(version_major, version_minor, version_patch, version_label))
+
+debian_distribution = "unstable"
+if version_label is not "":
+    debian_distribution = "UNRELEASED"
+
+debian_path = os.path.join(dirpath, "debian")
+changelog_file = os.path.join(debian_path, "changelog")
+
+# remove leading 'v'
+changelog_version = git_describe_version[1:] if git_describe_version[0] == 'v' else git_describe_version
+
+with open(changelog_file, 'r') as original: data = original.read()
+with open(changelog_file, 'w') as modified:
+    new_entry = """open62541 ({version}) {distribution}; urgency=medium
+
+  * Full changelog is available here: https://github.com/open62541/open62541/blob/master/CHANGELOG
+
+ -- open62541 Team <open62541-core@googlegroups.com>  {time}
+""".format(version=changelog_version, time=formatdate(), distribution = debian_distribution)
+
+    modified.write(new_entry + "\n" + data)
+
+# Create control file and replace template variables
+control_file_template = os.path.join(debian_path, "control-template")
+control_file = os.path.join(debian_path, "control")
+os.rename(control_file_template, control_file)
+
+with open(control_file, 'r+') as f:
+    content = f.read()
+    f.seek(0)
+    f.truncate()
+    f.write(content.replace('<soname>', "{}".format(version_major)))
+
+
+# rename the install template to match the soname
+install_file_template = os.path.join(debian_path, "libopen62541.install-template")
+install_file = os.path.join(debian_path, "libopen62541-{}.install".format(version_major))
+os.rename(install_file_template, install_file)
+
+install_file_template = os.path.join(debian_path, "libopen62541-dev.install-template")
+install_file = os.path.join(debian_path, "libopen62541-{}-dev.install".format(version_major))
+os.rename(install_file_template, install_file)
+
+
+# Create rule file and replace template variables
+rule_file_template = os.path.join(debian_path, "rules-template")
+rule_file = os.path.join(debian_path, "rules")
+os.rename(rule_file_template, rule_file)
+
+with open(rule_file, 'r+') as f:
+    content = f.read()
+    f.seek(0)
+    f.truncate()
+    content = content.replace('<soname>', "{}".format(version_major))
+    f.write(content)
+
+# Update CMakeLists.txt to include full version string
+
+with open(os.path.join(dirpath,"CMakeLists.txt"), 'r+') as f:
+    lines = f.readlines()
+    f.seek(0)
+    f.truncate()
+    for idx, line in enumerate(lines):
+        if idx == 2:
+            f.write('set(OPEN62541_VERSION "{}")\n'.format(git_describe_version))
+        f.write(line)

+ 33 - 25
tools/travis/travis_linux_script.sh

@@ -438,16 +438,20 @@ echo -en 'travis_fold:end:script.build.unit_test_ns0_full\\r'
 
 if ! [ -z ${DEBIAN+x} ]; then
     echo -e "\r\n== Building the Debian package =="  && echo -en 'travis_fold:start:script.build.debian\\r'
-    /usr/bin/$PYTHON ./debian/update_changelog.py
+    /usr/bin/$PYTHON ./tools/prepare_packaging.py
     echo -e "\r\n --- New debian changelog content ---"
     echo "--------------------------------------"
     cat ./debian/changelog
     echo "--------------------------------------"
+    # Create a backup copy. We need the clean debian directory for later packaging
+    cp -r debian debian_bak
     dpkg-buildpackage -b
     if [ $? -ne 0 ] ; then exit 1 ; fi
-    cp ../open62541*.deb .
+    rm -rf debian
+    mv debian_bak debian
+    cp ../libopen62541*.deb .
     # Copy for github release script
-    cp ../open62541*.deb ../..
+    cp ../libopen62541*.deb ../..
     echo -en 'travis_fold:end:script.build.debian\\r'
 fi
 
@@ -511,32 +515,36 @@ if [ "$CC" != "tcc" ]; then
 
         echo -en "\r\n==   Building coveralls for ${TRAVIS_REPO_SLUG} ==" && echo -en 'travis_fold:start:script.build.coveralls\\r'
         coveralls -E '.*/build/CMakeFiles/.*' -E '.*/examples/.*' -E '.*/tests/.*' -E '.*\.h' -E '.*CMakeCXXCompilerId\.cpp' -E '.*CMakeCCompilerId\.c' -r ../ || true # ignore result since coveralls is unreachable from time to time
+        cd .. && rm build -rf
         echo -en 'travis_fold:end:script.build.coveralls\\r'
 
-        if ([ "${TRAVIS_PULL_REQUEST}" = "false" ] &&
-            ([ "${TRAVIS_BRANCH}" == "master" ] || "${TRAVIS_BRANCH}" == "1.0" ] || "${TRAVIS_BRANCH}" == "pack_branch" ])); then
-            # Create a separate branch with the `-pack` postfix. This branch has the correct debian/changelog set, and
-            # The submodules are directly copied
-            echo -e "\r\n== Pushing ${TRAVIS_BRANCH}-pack branch =="  && echo -en 'travis_fold:start:script.build.pack-branch\\r'
-
-            cp -r deps/mdnsd deps/mdnsd_back
-            cp -r deps/ua-nodeset deps/ua-nodeset_back
-            git rm -rf --cached deps/mdnsd
-            git rm -rf --cached deps/ua-nodeset
-            mv deps/mdnsd_back deps/mdnsd
-            rm -rf deps/mdnsd/.git
-            mv deps/ua-nodeset_back deps/ua-nodeset
-            rm -rf deps/ua-nodeset/.git
-            rm -rf .gitmodules
-            git add deps/*
-            git add debian/*
-            git commit -m "[ci skip] Pack with inline submodules"
-            git push -uf origin ${TRAVIS_BRANCH}:${TRAVIS_BRANCH}-pack
-
-            echo -en 'travis_fold:end:script.build.pack-branch\\r'
+		if [ "${TRAVIS_PULL_REQUEST}" = "false" ]; then
+			if [ "${TRAVIS_BRANCH}" = "master" ] || [ "${TRAVIS_BRANCH}" = "1.0" ]; then
+				# Create a separate branch with the `pack/` prefix. This branch has the correct debian/changelog set, and
+				# The submodules are directly copied
+				echo -e "\r\n== Pushing 'pack/${TRAVIS_BRANCH}' branch =="  && echo -en 'travis_fold:start:script.build.pack-branch\\r'
+
+				git checkout -b pack-tmp/${TRAVIS_BRANCH}
+				cp -r deps/mdnsd deps/mdnsd_back
+				cp -r deps/ua-nodeset deps/ua-nodeset_back
+				git rm -rf --cached deps/mdnsd
+				git rm -rf --cached deps/ua-nodeset
+				mv deps/mdnsd_back deps/mdnsd
+				rm -rf deps/mdnsd/.git
+				mv deps/ua-nodeset_back deps/ua-nodeset
+				rm -rf deps/ua-nodeset/.git
+				rm -rf .gitmodules
+				git add deps/*
+				git add debian/*
+				git add CMakeLists.txt
+				git commit -m "[ci skip] Pack with inline submodules"
+				git remote add origin-auth https://$GITAUTH@github.com/${TRAVIS_REPO_SLUG}
+				git push -uf origin-auth pack-tmp/${TRAVIS_BRANCH}:pack/${TRAVIS_BRANCH}
+
+				echo -en 'travis_fold:end:script.build.pack-branch\\r'
+			fi
         fi
 
 
     fi
-    cd .. && rm build -rf
 fi

+ 2 - 2
tools/travis/travis_push_release.sh

@@ -33,7 +33,7 @@ if [ ! -e "releases/$TAG.zip" ]; then
     cp ./../../README.md .
     cp ./../../LICENSE .
     cp ./../../AUTHORS .
-    cp ./../../open62541*.deb .
+    cp ./../../libopen62541*.deb .
 
     zip -r "$TAG.zip" open62541.c open62541.h open62541.pdf README.md LICENSE AUTHORS open62541*.deb
     rm open62541.c
@@ -42,7 +42,7 @@ if [ ! -e "releases/$TAG.zip" ]; then
     rm README.md
     rm LICENSE
     rm AUTHORS
-    rm open62541*.deb
+    rm libopen62541*.deb
     git add "$TAG.zip"
 
     echo "$TAG.zip" | cat - raw.txt > temp && mv temp raw.txt