Browse Source

Merge pull request #889 from hamishcoleman/version_nr

Revamp version number handling
pull/891/head
Hamish Coleman 3 years ago
committed by GitHub
parent
commit
9c3a2c3301
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      .github/workflows/cmake.yml
  2. 55
      .github/workflows/debug.yml
  3. 40
      .github/workflows/tests.yml
  4. 1
      .gitignore
  5. 43
      CMakeLists.txt
  6. 21
      Makefile.in
  7. 1
      VERSION
  8. 13
      autogen.sh
  9. 19
      configure.ac
  10. 73
      doc/Building.md
  11. 50
      doc/Scripts.md
  12. 7
      packages/debian/configure
  13. 6
      packages/debian/configure.in
  14. 2
      packages/debian/debian/changelog.in
  15. 2
      packages/debian/debian/control.in
  16. 2
      packages/debian/debian/files.in
  17. 11
      packages/openwrt/patches/001-fix-cc.patch
  18. 2
      packages/rpm/Makefile.in
  19. 21
      packages/rpm/configure
  20. 6
      packages/rpm/configure.in
  21. 4
      packages/rpm/n2n.spec.in
  22. 3
      scripts/hack_fakeautoconf.sh
  23. 46
      scripts/version.sh
  24. 2
      src/n2n.c
  25. 2
      src/sn_utils.c
  26. 6
      win32/winconfig.h

6
.github/workflows/cmake-linux.yml → .github/workflows/cmake.yml

@ -25,6 +25,12 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fix Checkout
run: |
git fetch --force --tags
- name: Create Build Environment - name: Create Build Environment
# Some projects don't allow in-source building, so create a separate # Some projects don't allow in-source building, so create a separate

55
.github/workflows/debug.yml

@ -0,0 +1,55 @@
---
name: Debug
# yamllint disable-line rule:truthy
on:
workflow_dispatch:
jobs:
# Oh, github, for a company that is built around the git VCS, how is it
# that you have managed to break the repositories so much?
#
debug_github_repo:
name: Debug Github Repo
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fix Checkout
run: |
git fetch --force --tags
- name: Debug data output
run: |
echo ==========
echo git status
git status
echo ==========
echo git tag
git tag
echo ==========
echo git describe
git describe || true
echo ==========
echo git for-each-ref refs/heads
git for-each-ref refs/heads
echo ==========
echo git for-each-ref refs/tags
git for-each-ref refs/tags
echo ==========
echo ls .git/refs/heads
ls .git/refs/heads
echo ==========
echo ls .git/refs/tags
ls .git/refs/tags
echo ==========
TYPE=$(git cat-file -t $GITHUB_REF)
echo REF=$GITHUB_REF
echo TAGTYPE=$TYPE
echo ==========
echo git cat-file $TYPE $GITHUB_REF
git cat-file $TYPE $GITHUB_REF

40
.github/workflows/tests.yml

@ -13,6 +13,12 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fix Checkout
run: |
git fetch --force --tags
- name: Run minimal test set - name: Run minimal test set
run: | run: |
./autogen.sh ./autogen.sh
@ -25,6 +31,12 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fix Checkout
run: |
git fetch --force --tags
- name: Make the makefiles - name: Make the makefiles
run: | run: |
@ -52,6 +64,12 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fix Checkout
run: |
git fetch --force --tags
- name: Install essential - name: Install essential
run: | run: |
@ -118,6 +136,12 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fix Checkout
run: |
git fetch --force --tags
- name: Install packages - name: Install packages
run: | run: |
@ -191,6 +215,12 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fix Checkout
run: |
git fetch --force --tags
- name: generate a makefile and use it to install more packages - name: generate a makefile and use it to install more packages
run: | run: |
@ -335,6 +365,8 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fix Checkout - name: Fix Checkout
run: | run: |
@ -371,6 +403,8 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fix Checkout - name: Fix Checkout
run: | run: |
@ -418,6 +452,8 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fix Checkout - name: Fix Checkout
run: | run: |
@ -471,6 +507,8 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fix Checkout - name: Fix Checkout
run: | run: |
@ -528,6 +566,8 @@ jobs:
steps: steps:
- uses: actions/checkout@v2 - uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fix Checkout - name: Fix Checkout
run: | run: |

1
.gitignore

@ -2,7 +2,6 @@
*.a *.a
*.gz *.gz
configure configure
configure.ac
config.* config.*
/Makefile /Makefile
tools/Makefile tools/Makefile

43
CMakeLists.txt

@ -6,34 +6,29 @@ SET(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# N2n release information # N2n release information
set(N2N_VERSION "3.1.0")
set(N2N_OSNAME ${CMAKE_SYSTEM_NAME})
execute_process( execute_process(
COMMAND git status COMMAND scripts/version.sh
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
OUTPUT_VARIABLE GIT_OUTPUT OUTPUT_VARIABLE PACKAGE_VERSION
RESULT_VARIABLE GIT_ERROR_CODE RESULT_VARIABLE GIT_ERROR_CODE
) )
if (GIT_ERROR_CODE EQUAL 0) if (NOT GIT_ERROR_CODE EQUAL 0)
execute_process( # - if we can run version.sh and it exits with an error that is signaling
COMMAND git rev-list --count HEAD # a build failure.
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} # - if we are on windows with no MSYS or Cygwin, we cannot run version.sh
OUTPUT_VARIABLE GIT_REV # which is the fallback case handled below
) # TODO: Distinguish between these two cases
execute_process(
COMMAND git rev-parse --short HEAD # Fallback to just using the non dynamic short version string
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} file(STRINGS VERSION PACKAGE_VERSION)
OUTPUT_VARIABLE GIT_ID endif (NOT GIT_ERROR_CODE EQUAL 0)
)
string(REGEX REPLACE "\n$" "" GIT_REV "${GIT_REV}") string(STRIP "${PACKAGE_VERSION}" PACKAGE_VERSION)
string(REGEX REPLACE "\n$" "" GIT_ID "${GIT_ID}") MESSAGE(STATUS "Build for version: ${PACKAGE_VERSION}")
set(N2N_VERSION "${N2N_VERSION}.r${GIT_REV}.${GIT_ID}")
MESSAGE(STATUS "Build from git rev: ${N2N_VERSION}")
endif (GIT_ERROR_CODE EQUAL 0)
add_definitions(-DCMAKE_BUILD) add_definitions(-DCMAKE_BUILD)
add_definitions(-DGIT_RELEASE="${N2N_VERSION}" -DPACKAGE_VERSION="${N2N_VERSION}" -DPACKAGE_OSNAME="${N2N_OSNAME}") add_definitions(-DPACKAGE_OSNAME="${CMAKE_SYSTEM_NAME}")
add_definitions(-DN2N_VERSION="${N2N_VERSION}" -DN2N_OSNAME="${N2N_OSNAME}") add_definitions(-DPACKAGE_VERSION="${PACKAGE_VERSION}")
# Build information # Build information

21
Makefile.in

@ -1,8 +1,6 @@
# NOTE: these are needed by the configure.in inside the packages folder # NOTE: these are needed by the configure.in inside the packages folder
N2N_VERSION_SHORT=@N2N_VERSION_SHORT@ N2N_VERSION=@N2N_VERSION@
GIT_COMMITS=@GIT_COMMITS@
GIT_DESCRIBE=$(shell git describe --always --dirty)
######## ########
@ -150,7 +148,14 @@ COVERAGEDIR?=coverage
.PHONY: steps build push all clean distclean install test cover gcov build-dep .PHONY: steps build push all clean distclean install test cover gcov build-dep
.PHONY: lint lint.python lint.ccode lint.shell lint.yaml .PHONY: lint lint.python lint.ccode lint.shell lint.yaml
all: $(APPS) $(DOCS) $(SUBDIRS) all: version $(APPS) $(DOCS) $(SUBDIRS)
# This allows breaking the build if the version.sh script discovers
# any inconsistancies
.PHONY: version
version:
@echo -n "Build for version: "
@scripts/version.sh
tools: $(N2N_LIB) tools: $(N2N_LIB)
$(MAKE) -C $@ $(MAKE) -C $@
@ -233,8 +238,11 @@ clean:
distclean: distclean:
rm -f tests/*.out src/*.gcno src/*.gcda src/*.indent src/*.unc-backup* rm -f tests/*.out src/*.gcno src/*.gcda src/*.indent src/*.unc-backup*
rm -rf autom4te.cache/ rm -rf autom4te.cache/
rm -f config.log config.status configure configure.ac Makefile tools/Makefile include/config.h include/config.h.in rm -f config.log config.status configure Makefile tools/Makefile include/config.h include/config.h.in
rm -f doc/edge.8.gz doc/n2n.7.gz doc/supernode.1.gz rm -f doc/edge.8.gz doc/n2n.7.gz doc/supernode.1.gz
rm -f packages/debian/config.log packages/debian/config.status
rm -rf packages/debian/autom4te.cache/
rm -f packages/rpm/config.log packages/rpm/config.status
rm -f $(addprefix src/,$(APPS)) rm -f $(addprefix src/,$(APPS))
install: edge supernode edge.8.gz supernode.1.gz n2n.7.gz install: edge supernode edge.8.gz supernode.1.gz n2n.7.gz
@ -250,11 +258,12 @@ install: edge supernode edge.8.gz supernode.1.gz n2n.7.gz
# Docker builder section # Docker builder section
DOCKER_IMAGE_NAME=ntop/supernode DOCKER_IMAGE_NAME=ntop/supernode
DOCKER_IMAGE_VERSION=$N2N_VERSION_SHORT DOCKER_IMAGE_VERSION=$N2N_VERSION_SHORT
N2N_COMMIT_HASH=@GIT_REVISION@ N2N_COMMIT_HASH=$(shell scripts/version.sh hash)
default: steps default: steps
steps: steps:
$(info This code appears to have been bitrotted since 2019 - please let us know if you are using it)
if [ "$(TARGET_ARCHITECTURE)" = "arm32v7" ] || [ "$(TARGET_ARCHITECTURE)" = "" ]; then DOCKER_IMAGE_FILENAME="Dockerfile.arm32v7" DOCKER_IMAGE_TAGNAME=$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_VERSION)-arm32v7 make build; fi if [ "$(TARGET_ARCHITECTURE)" = "arm32v7" ] || [ "$(TARGET_ARCHITECTURE)" = "" ]; then DOCKER_IMAGE_FILENAME="Dockerfile.arm32v7" DOCKER_IMAGE_TAGNAME=$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_VERSION)-arm32v7 make build; fi
if [ "$(TARGET_ARCHITECTURE)" = "x86_64" ] || [ "$(TARGET_ARCHITECTURE)" = "" ]; then DOCKER_IMAGE_FILENAME="Dockerfile.x86_64" DOCKER_IMAGE_TAGNAME=$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_VERSION)-x86_64 make build; fi if [ "$(TARGET_ARCHITECTURE)" = "x86_64" ] || [ "$(TARGET_ARCHITECTURE)" = "" ]; then DOCKER_IMAGE_FILENAME="Dockerfile.x86_64" DOCKER_IMAGE_TAGNAME=$(DOCKER_IMAGE_NAME):$(DOCKER_IMAGE_VERSION)-x86_64 make build; fi

1
VERSION

@ -0,0 +1 @@
3.1.0

13
autogen.sh

@ -1,17 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# NOTE: update version in CMakeLists.txt after changing these rm -f include/config.h include/config.h.in include/config.h.in~ Makefile configure
N2N_MAJOR="3"
N2N_MINOR="1"
N2N_PATCH="0"
N2N_VERSION_SHORT="$N2N_MAJOR.$N2N_MINOR.$N2N_PATCH"
cat configure.seed | sed \
-e "s/@N2N_VERSION_SHORT@/$N2N_VERSION_SHORT/g" \
> configure.ac
rm -f config.h config.h.in *~ Makefile configure #*
echo "Wait please..." echo "Wait please..."
autoreconf -if autoreconf -if

19
configure.seed → configure.ac

@ -1,17 +1,8 @@
odnl> Do not add anything above odnl> Do not add anything above
AC_INIT([edge],@N2N_VERSION_SHORT@) AC_INIT([edge], m4_esyscmd([scripts/version.sh | tr -d '\n']))
dnl> Do not add anything above dnl> Do not add anything above
N2N_VERSION_SHORT=${PACKAGE_VERSION} N2N_VERSION=${PACKAGE_VERSION}
if test -d ".git"; then
# NOTE: keep in sync with the definitions for configure.in files under the packages folder
GIT_COMMITS=`git rev-list --count HEAD`
GIT_REVISION=`git rev-parse --short HEAD`
GIT_RELEASE="${N2N_VERSION_SHORT}.r${GIT_COMMITS}.${GIT_REVISION}"
else
GIT_RELEASE=${N2N_VERSION_SHORT}
fi
if test "${CC+set}" != set; then if test "${CC+set}" != set; then
CC=gcc CC=gcc
@ -108,7 +99,6 @@ dnl> wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=bl
OSNAME=`./config.guess` OSNAME=`./config.guess`
fi fi
AC_DEFINE_UNQUOTED(PACKAGE_OSNAME, "${OSNAME}", [OS name]) AC_DEFINE_UNQUOTED(PACKAGE_OSNAME, "${OSNAME}", [OS name])
AC_DEFINE_UNQUOTED(GIT_RELEASE, "${GIT_RELEASE}", [GIT release])
if test $MACHINE = "x86_64"; then if test $MACHINE = "x86_64"; then
EXTN="amd64" EXTN="amd64"
@ -124,10 +114,7 @@ AC_SUBST(CC)
AC_SUBST(AR) AC_SUBST(AR)
AC_SUBST(CFLAGS) AC_SUBST(CFLAGS)
AC_SUBST(LDFLAGS) AC_SUBST(LDFLAGS)
AC_SUBST(N2N_VERSION_SHORT) AC_SUBST(N2N_VERSION)
AC_SUBST(GIT_COMMITS)
AC_SUBST(GIT_REVISION)
AC_SUBST(GIT_RELEASE)
AC_SUBST(N2N_DEFINES) AC_SUBST(N2N_DEFINES)
AC_SUBST(N2N_LIBS) AC_SUBST(N2N_LIBS)
AC_SUBST(ADDITIONAL_TOOLS) AC_SUBST(ADDITIONAL_TOOLS)

73
doc/Building.md

@ -21,30 +21,22 @@ In order to build on Windows the following tools should be installed:
- Visual Studio. For a minimal install, the command line only build tools can be - Visual Studio. For a minimal install, the command line only build tools can be
downloaded and installed from https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2017. downloaded and installed from https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2017.
- CMake - CMake (From https://cmake.org/download/)
- (optional) The OpenSSL library. Prebuild binaries can be downloaded from https://slproweb.com/products/Win32OpenSSL.html. NOTE: You should always use the official cmake stable release as otherwise
The full version is required, i.e. not the "Light" version. The Win32 version of it is usually required for a standard build. you may have issues finding libraries (e.g: the installed OpenSSL library).
If you still have problems, you can try invoking it with `C:\Program Files\CMake\bin\cmake`.
> NOTE: In order to skip OpenSSL compilation, edit `CMakeLists.txt` and replace **– is this still valid?** - (optional) The OpenSSL library. Pre-built binaries can be downloaded from
> https://slproweb.com/products/Win32OpenSSL.html.
> ```plaintext The full version is required, i.e. not the "Light" version. The Win32
> OPTION(N2N_OPTION_AES "USE AES" ON) version of it is usually required for a standard build.
> with
> OPTION(N2N_OPTION_AES "USE AES" OFF)
> ```
NOTE: To statically link OpenSSL, add the `-DOPENSSL_USE_STATIC_LIBS=true` option to the `cmake` command below. NOTE: In order to enable OpenSSL compilation, add the option
`-DN2N_OPTION_USE_OPENSSL=ON` to the `cmake ..` command below.
- If compilation throws a "config.h: No such file or directory" error, an `include/config.h` file needs to be obtained from an already configured Linux compilation and put into the `include/` directory as discussed [here](https://github.com/ntop/n2n/issues/366). NOTE: To statically link OpenSSL, add the option
`-DOPENSSL_USE_STATIC_LIBS=true` to the `cmake ..` command below.
In order to run n2n, you will need the following:
- The TAP drivers should be installed into the system. They can be installed from
http://build.openvpn.net/downloads/releases, search for "tap-windows".
- If OpenSSL has been linked dynamically, the corresponding `.dll` file should be available
onto the target computer.
NOTE: Sticking to this tool chain has historically meant that resulting NOTE: Sticking to this tool chain has historically meant that resulting
executables are more likely to be able to communicate with Linux or other executables are more likely to be able to communicate with Linux or other
@ -52,49 +44,38 @@ OS builds, however efforts are being made to address this concern.
## Build (CLI) ## Build (CLI)
In order to build from the command line, open a terminal window and run the following commands: In order to build from the command line, open a terminal window change to
the directory where the git checkout of this repository is and run the
following commands:
```batch ```batch
md build cmake -E make_directory build
cd build cd build
rem Append any options to the next line
cmake .. cmake ..
MSBuild.exe edge.vcxproj /t:Build /p:Configuration=Release cmake --build . --config Release
MSBuild.exe supernode.vcxproj /t:Build /p:Configuration=Release
MSBuild.exe n2n-benchmark.vcxproj /t:Build /p:Configuration=Release
``` ```
NOTE: If CMake has problems finding the installed OpenSSL library, try to download the official cmake and invoke it with
`C:\Program Files\CMake\bin\cmake`.
NOTE: Visual Studio might not add `MSBuild.exe`'s path to the environment variable %PATH% so you might have difficulties finding and executing it without giving the full path. Regular installations seem to have it reside at `"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe"`
The compiled `.exe` files should now be available in the `build\Release` directory. The compiled `.exe` files should now be available in the `build\Release` directory.
## Run ## Run
The `edge.exe` program reads the `edge.conf` file located into the current directory if no option is provided. In order to run n2n, you will need the following:
Here is an example `edge.conf` file:
```plaintext - The TAP drivers should be installed into the system. They can be installed from
-c=mycommunity http://build.openvpn.net/downloads/releases, search for "tap-windows".
-k=mysecretpass
# supernode IP address - If OpenSSL has been linked dynamically, the corresponding `.dll` file should be available
-l=1.2.3.4:5678 onto the target computer.
# edge IP address The `edge.exe` program reads the `edge.conf` file located into the current directory if no option is provided.
-a=192.168.100.1
```
The `supernode.exe` program reads the `supernode.conf` file located into the current directory if no option is provided. The `supernode.exe` program reads the `supernode.conf` file located into the current directory if no option is provided.
Here is an example `supernode.conf` file: Example [edge.conf](../packages/etc/n2n/edge.conf.sample)
and [supernode.conf](../packages/etc/n2n/supernode.conf.sample) are available.
```plaintext
-p=5678
```
See `edge.exe --help` and `supernode.exe --help` for a full list of supported options. See `edge.exe --help` and `supernode.exe --help` for a full list of supported options.

50
doc/Scripts.md

@ -5,25 +5,13 @@ Some of these scripts are only useful during build and development, but
other scripts are intended for end users to be able to use. These scripts other scripts are intended for end users to be able to use. These scripts
may be installed with n2n as part of your operating system package. may be installed with n2n as part of your operating system package.
Short descriptions of these scripts are below. All scripts can be found in the `scripts` directory.
## `scripts/hack_fakeautoconf.sh`
This shell script is used during development to help build on Windows
systems. An example of how to use it is shown in
the [Building document](Building.md)
## `scripts/indent.sh` Short descriptions of these scripts are below.
This shell script is a wrapper for the `uncrustify` C code style checker
which checks or applies a set of rules to the code. It is used during
the automated lint checks.
## `scripts/test_harness.sh` ## End user scripts
This shell script is used to run automated tests during development. ### `n2n-ctl`
## `scripts/n2n-ctl`
This python script provides an easy command line interface to the running This python script provides an easy command line interface to the running
n2n processes. It uses UDP communications to talk to the Management API. n2n processes. It uses UDP communications to talk to the Management API.
@ -34,7 +22,7 @@ Example:
- `scripts/n2n-ctl --help` - `scripts/n2n-ctl --help`
- `scripts/n2n-ctl help` - `scripts/n2n-ctl help`
## `scripts/n2n-httpd` ### `n2n-httpd`
This python script is a simple http gateway to the running edge. It provides This python script is a simple http gateway to the running edge. It provides
a proxy for REST-like HTTP requests to talk to the Management API. a proxy for REST-like HTTP requests to talk to the Management API.
@ -49,7 +37,33 @@ Example:
- `scripts/n2n-httpd --help` - `scripts/n2n-httpd --help`
- `scripts/n2n-httpd 8087` - `scripts/n2n-httpd 8087`
## `scripts/n2n-gateway.sh` ## Build and Development scripts
### `hack_fakeautoconf.sh`
This shell script is used during development to help build on Windows
systems. An example of how to use it is shown in
the [Building document](Building.md)
### `indent.sh`
This shell script is a wrapper for the `uncrustify` C code style checker
which checks or applies a set of rules to the code. It is used during
the automated lint checks.
### `test_harness.sh`
This shell script is used to run automated tests during development.
### `n2n-gateway.sh`
A sample script to route all the host traffic towards a remote gateway, A sample script to route all the host traffic towards a remote gateway,
which is reachable via the n2n virtual interface. which is reachable via the n2n virtual interface.
### `version.sh`
This script is used to determine the current version number during the
build process.
It looks at both the VERSION file and the GIT tags and outputs the
version number to use.

7
packages/debian/configure

@ -586,8 +586,7 @@ LIBOBJS
EXTRA_DEP EXTRA_DEP
DATE DATE
EXTN EXTN
GIT_COMMITS N2N_VERSION
N2N_VERSION_SHORT
APP APP
target_alias target_alias
host_alias host_alias
@ -1694,8 +1693,7 @@ fi
# NOTE: this file is not actually used. You need to edit configure as well! # NOTE: this file is not actually used. You need to edit configure as well!
N2N_VERSION_SHORT=`grep N2N_VERSION_SHORT ../../Makefile | head -1| cut -d "=" -f 2` N2N_VERSION=$(../../scripts/version.sh)
GIT_COMMITS=`grep GIT_COMMITS ../../Makefile | head -1| cut -d "=" -f 2`
DEBIAN_VERSION=`cat /etc/debian_version | grep "^8" | wc -l` DEBIAN_VERSION=`cat /etc/debian_version | grep "^8" | wc -l`
@ -1740,7 +1738,6 @@ DATE=`date -R`
ac_config_files="$ac_config_files debian/changelog" ac_config_files="$ac_config_files debian/changelog"
ac_config_files="$ac_config_files debian/files" ac_config_files="$ac_config_files debian/files"

6
packages/debian/configure.in

@ -3,8 +3,7 @@ AC_INIT([Makefile.in], 1.0)
AC_ARG_WITH(edgex, [ --with-edgex Build for Ubiquity-X]) AC_ARG_WITH(edgex, [ --with-edgex Build for Ubiquity-X])
# NOTE: this file is not actually used. You need to edit configure as well! # NOTE: this file is not actually used. You need to edit configure as well!
N2N_VERSION_SHORT=`grep N2N_VERSION_SHORT ../../Makefile | head -1| cut -d "=" -f 2` N2N_VERSION=$(../../scripts/version.sh)
GIT_COMMITS=`grep GIT_COMMITS ../../Makefile | head -1| cut -d "=" -f 2`
DEBIAN_VERSION=`cat /etc/debian_version | grep "^8" | wc -l` DEBIAN_VERSION=`cat /etc/debian_version | grep "^8" | wc -l`
@ -44,8 +43,7 @@ APP=n2n
DATE=`date -R` DATE=`date -R`
AC_SUBST(APP) AC_SUBST(APP)
AC_SUBST(N2N_VERSION_SHORT) AC_SUBST(N2N_VERSION)
AC_SUBST(GIT_COMMITS)
AC_SUBST(EXTN) AC_SUBST(EXTN)
AC_SUBST(DATE) AC_SUBST(DATE)
AC_SUBST(EXTRA_DEP) AC_SUBST(EXTRA_DEP)

2
packages/debian/debian/changelog.in

@ -1,4 +1,4 @@
@APP@ (@N2N_VERSION_SHORT@-@GIT_COMMITS@) table; urgency=high @APP@ (@N2N_VERSION@) table; urgency=high
* Last packaged version * Last packaged version
-- Luca Deri <deri@ntop.org> @DATE@ -- Luca Deri <deri@ntop.org> @DATE@

2
packages/debian/debian/control.in

@ -2,7 +2,7 @@ Source: n2n
Section: net Section: net
Priority: extra Priority: extra
Maintainer: Luca Deri <deri@ntop.org> Maintainer: Luca Deri <deri@ntop.org>
Standards-Version: @N2N_VERSION_SHORT@ Standards-Version: 4.6.0
Build-Depends: Build-Depends:
Package: n2n Package: n2n

2
packages/debian/debian/files.in

@ -1 +1 @@
n2n_@N2N_VERSION_SHORT@_@EXTN@.deb free optional n2n_@N2N_VERSION@_@EXTN@.deb free optional

11
packages/openwrt/patches/001-fix-cc.patch

@ -1,11 +0,0 @@
--- a/configure.seed
+++ b/configure.seed
@@ -13,8 +13,6 @@
GIT_RELEASE=${N2N_VERSION_SHORT}
fi
-CC=gcc
-AR=ar
N2N_LIBS=
AC_PROG_CC

2
packages/rpm/Makefile.in

@ -4,7 +4,7 @@
N2N_HOME=$(PWD)/../.. N2N_HOME=$(PWD)/../..
N2N_BUILD=${N2N_HOME}/packages/debian/n2n N2N_BUILD=${N2N_HOME}/packages/debian/n2n
PLATFORM=@MACHINE@ PLATFORM=@MACHINE@
RPM_PKG=n2n-@N2N_VERSION_SHORT@-@GIT_COMMITS@.$(PLATFORM).rpm RPM_PKG=n2n-@N2N_VERSION_RPM@-1.$(PLATFORM).rpm
all: clean pkg all: clean pkg

21
packages/rpm/configure

@ -586,8 +586,7 @@ LIBOBJS
RPM_SIGN_CMD RPM_SIGN_CMD
DATE DATE
EXTN EXTN
GIT_COMMITS N2N_VERSION_RPM
N2N_VERSION_SHORT
MACHINE MACHINE
APP APP
target_alias target_alias
@ -609,6 +608,7 @@ infodir
docdir docdir
oldincludedir oldincludedir
includedir includedir
runstatedir
localstatedir localstatedir
sharedstatedir sharedstatedir
sysconfdir sysconfdir
@ -673,6 +673,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc' sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com' sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var' localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include' includedir='${prefix}/include'
oldincludedir='/usr/include' oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@ -925,6 +926,15 @@ do
| -silent | --silent | --silen | --sile | --sil) | -silent | --silent | --silen | --sile | --sil)
silent=yes ;; silent=yes ;;
-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;; ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@ -1062,7 +1072,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \ datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir libdir localedir mandir runstatedir
do do
eval ac_val=\$$ac_var eval ac_val=\$$ac_var
# Remove trailing slashes. # Remove trailing slashes.
@ -1215,6 +1225,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var] --localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib] --libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include] --includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include] --oldincludedir=DIR C header files for non-gcc [/usr/include]
@ -1670,8 +1681,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
# NOTE: this file is not actually used. You need to edit configure as well! # NOTE: this file is not actually used. You need to edit configure as well!
N2N_VERSION_SHORT=`grep N2N_VERSION_SHORT ../../Makefile | head -1| cut -d "=" -f 2` N2N_VERSION_RPM=$(../../scripts/version.sh |tr - _)
GIT_COMMITS=`grep GIT_COMMITS ../../Makefile | head -1| cut -d "=" -f 2`
MACHINE=`uname -m` MACHINE=`uname -m`
SHORT_MACHINE=`uname -m | cut -b1-3` SHORT_MACHINE=`uname -m | cut -b1-3`
@ -1717,7 +1727,6 @@ fi
ac_config_files="$ac_config_files n2n.spec" ac_config_files="$ac_config_files n2n.spec"
ac_config_files="$ac_config_files ../etc/systemd/system/edge.service" ac_config_files="$ac_config_files ../etc/systemd/system/edge.service"

6
packages/rpm/configure.in

@ -1,8 +1,7 @@
AC_INIT([Makefile.in], 1.0) AC_INIT([Makefile.in], 1.0)
# NOTE: this file is not actually used. You need to edit configure as well! # NOTE: this file is not actually used. You need to edit configure as well!
N2N_VERSION_SHORT=`grep N2N_VERSION_SHORT ../../Makefile | head -1| cut -d "=" -f 2` N2N_VERSION_RPM=$(../../scripts/version.sh |tr - _)
GIT_COMMITS=`grep GIT_COMMITS ../../Makefile | head -1| cut -d "=" -f 2`
MACHINE=`uname -m` MACHINE=`uname -m`
SHORT_MACHINE=`uname -m | cut -b1-3` SHORT_MACHINE=`uname -m | cut -b1-3`
@ -43,8 +42,7 @@ fi
AC_SUBST(APP) AC_SUBST(APP)
AC_SUBST(MACHINE) AC_SUBST(MACHINE)
AC_SUBST(N2N_VERSION_SHORT) AC_SUBST(N2N_VERSION_RPM)
AC_SUBST(GIT_COMMITS)
AC_SUBST(EXTN) AC_SUBST(EXTN)
AC_SUBST(DATE) AC_SUBST(DATE)
AC_SUBST(RPM_SIGN_CMD) AC_SUBST(RPM_SIGN_CMD)

4
packages/rpm/n2n.spec.in

@ -1,7 +1,7 @@
Summary: n2n peer-to-peer VPN Summary: n2n peer-to-peer VPN
Name: n2n Name: n2n
Version: @N2N_VERSION_SHORT@ Version: @N2N_VERSION_RPM@
Release: @GIT_COMMITS@ Release: 1
License: GPL License: GPL
Group: Networking/Utilities Group: Networking/Utilities
URL: http://www.ntop.org/ URL: http://www.ntop.org/

3
scripts/hack_fakeautoconf.sh

@ -4,8 +4,6 @@
# like boiling the ocean. # like boiling the ocean.
sed \ sed \
-e "s%@N2N_VERSION_SHORT@%FIXME%g" \
-e "s%@GIT_COMMITS@%FIXME%g" \
-e "s%@CC@%gcc%g" \ -e "s%@CC@%gcc%g" \
-e "s%@AR@%ar%g" \ -e "s%@AR@%ar%g" \
-e "s%@CFLAGS@%$CFLAGS%g" \ -e "s%@CFLAGS@%$CFLAGS%g" \
@ -20,5 +18,4 @@ sed \
cat <<EOF >include/config.h cat <<EOF >include/config.h
#define PACKAGE_VERSION "FIXME" #define PACKAGE_VERSION "FIXME"
#define PACKAGE_OSNAME "FIXME" #define PACKAGE_OSNAME "FIXME"
#define GIT_RELEASE "FIXME"
EOF EOF

46
scripts/version.sh

@ -0,0 +1,46 @@
#!/bin/sh
#
# Output the current version number
#
usage() {
echo "Usage: $0 [short|hash]"
echo
echo "Determine the correct version number for the current build"
exit 0
}
VER_FILE_DIR=$(dirname "$0")/..
VER_FILE_SHORT=$(cat "${VER_FILE_DIR}/VERSION")
if git status >/dev/null; then
VER_GIT_SHORT=$(git describe --abbrev=0)
if [ "$VER_FILE_SHORT" != "$VER_GIT_SHORT" ]; then
echo "Error: VERSION file does not match tag version ($VER_FILE_SHORT != $VER_GIT_SHORT)"
exit 1
fi
VER_SHORT="$VER_GIT_SHORT"
VER_HASH=$(git rev-parse --short HEAD)
VER=$(git describe --abbrev=7 --dirty)
else
VER_SHORT="$VER_FILE_SHORT"
VER_HASH="HEAD"
VER="$VER_FILE_SHORT"
fi
case "$1" in
hash)
echo "$VER_HASH"
;;
short)
echo "$VER_SHORT"
;;
"")
echo "$VER"
;;
*)
usage
;;
esac

2
src/n2n.c

@ -590,7 +590,7 @@ void print_n2n_version () {
printf("Welcome to n2n v.%s for %s\n" printf("Welcome to n2n v.%s for %s\n"
"Built on %s\n" "Built on %s\n"
"Copyright 2007-2021 - ntop.org and contributors\n\n", "Copyright 2007-2021 - ntop.org and contributors\n\n",
GIT_RELEASE, PACKAGE_OSNAME, PACKAGE_BUILDDATE); PACKAGE_VERSION, PACKAGE_OSNAME, PACKAGE_BUILDDATE);
} }
/* *********************************************** */ /* *********************************************** */

2
src/sn_utils.c

@ -741,7 +741,7 @@ int sn_init_defaults (n2n_sn_t *sss) {
memset(sss, 0, sizeof(n2n_sn_t)); memset(sss, 0, sizeof(n2n_sn_t));
strncpy(sss->version, GIT_RELEASE, sizeof(n2n_version_t)); strncpy(sss->version, PACKAGE_VERSION, sizeof(n2n_version_t));
sss->version[sizeof(n2n_version_t) - 1] = '\0'; sss->version[sizeof(n2n_version_t) - 1] = '\0';
sss->daemon = 1; /* By defult run as a daemon. */ sss->daemon = 1; /* By defult run as a daemon. */
sss->lport = N2N_SN_LPORT_DEFAULT; sss->lport = N2N_SN_LPORT_DEFAULT;

6
win32/winconfig.h

@ -2,14 +2,10 @@
/* OS name */ /* OS name */
#ifndef PACKAGE_OSNAME #ifndef PACKAGE_OSNAME
#define PACKAGE_OSNAME N2N_OSNAME #define PACKAGE_OSNAME "windows"
#endif #endif
/* Define to the version of this package. */ /* Define to the version of this package. */
#ifndef PACKAGE_VERSION #ifndef PACKAGE_VERSION
#define PACKAGE_VERSION N2N_VERSION #define PACKAGE_VERSION N2N_VERSION
#endif #endif
#ifndef GIT_RELEASE
#define GIT_RELEASE N2N_VERSION
#endif

Loading…
Cancel
Save