summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordd <dd@wx.tnyzeq.icu>2024-10-10 18:00:00 +0200
committerdd <dd@wx.tnyzeq.icu>2024-10-10 18:00:00 +0200
commitfb39083b74d2b2a5b4c330c7223031d00c9e289e (patch)
treead8a252af1cb0685ddba3921583b5e3416875018
parenta0190970a32fb3ab7d41af6cde9d179a03072f87 (diff)
downloadvyos-jenkins-fb39083b74d2b2a5b4c330c7223031d00c9e289e.tar.gz
vyos-jenkins-fb39083b74d2b2a5b4c330c7223031d00c9e289e.zip
added libnss-tacplus workaround for circinus
-rwxr-xr-xnew/package_builder.py17
-rwxr-xr-xnew/scripts/build_py.sh11
-rwxr-xr-xnew/scripts/pam_tacplus.sh40
3 files changed, 63 insertions, 5 deletions
diff --git a/new/package_builder.py b/new/package_builder.py
index b50f59f..915c536 100755
--- a/new/package_builder.py
+++ b/new/package_builder.py
@@ -12,7 +12,8 @@ from lib.debranding import Debranding
from lib.docker import Docker
from lib.git import Git
from lib.github import GitHub
-from lib.helpers import setup_logging, ProcessException, refuse_root, get_my_log_file, data_dir, build_dir, scripts_dir
+from lib.helpers import setup_logging, ProcessException, refuse_root, get_my_log_file, data_dir, build_dir, scripts_dir, \
+ quote_all
from lib.scripting import Scripting
@@ -138,19 +139,25 @@ class PackageBuilder:
"PACKAGE_NAME": package["package_name"],
})
+ virtual_scripts = "/my-build-scripts"
if package["build_type"] == "build.py":
my_directory = os.path.join(self.my_build_dir, "vyos-build", package["path"])
if not self.skip_build or new:
# It's important to run bash in interactive mode, non-interactive shell breaks dependency on .bashrc.
- # It's also required to call python explicitly since some scripts don't have correct shebang.
- self.docker.run("bash -i -c 'python3 ./build.py'", work_dir="/vyos/%s" % package["path"])
+ build_script = os.path.join(virtual_scripts, "build_py.sh")
+ vyos_dir = "/vyos/%s" % package["path"]
+ self.docker.run(
+ "bash -i -c '%s %s'" % quote_all(build_script, package["package_name"]),
+ work_dir=vyos_dir,
+ extra_mounts=[
+ (scripts_dir, virtual_scripts)
+ ],
+ )
elif package["build_type"] == "dpkg-buildpackage":
my_directory = os.path.join(self.my_build_dir, repo_name)
virtual_dir = "/vyos-%s" % package["package_name"]
- virtual_scripts = "%s-scripts" % virtual_dir
-
build_script = "generic-build-script.sh"
custom_build_script = os.path.join(scripts_dir, "%s.sh" % package["package_name"])
if os.path.exists(custom_build_script):
diff --git a/new/scripts/build_py.sh b/new/scripts/build_py.sh
new file mode 100755
index 0000000..c8819bf
--- /dev/null
+++ b/new/scripts/build_py.sh
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+set -e
+package_name="$1"
+
+my_script="/my-build-scripts/$package_name.sh"
+if [ -f "$my_script" ]; then
+ $my_script
+else
+ # It's required to call python explicitly since some scripts don't have correct shebang.
+ python3 ./build.py
+fi
diff --git a/new/scripts/pam_tacplus.sh b/new/scripts/pam_tacplus.sh
new file mode 100755
index 0000000..88a6a76
--- /dev/null
+++ b/new/scripts/pam_tacplus.sh
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+set -e
+
+# build libpam-tacplus
+python3 ./build.py
+
+# The libnss-tacplus is missing right now, so we put it here.
+# There is a catch - the libnss-tacplus and libtacplus-map1 won't compile with the used libpam-tacplus 1.7.0.
+# Thus we need to temporarily build the libpam-tacplus 1.4.3, we use it for build and then throw it away.
+if [ ! -d libnss-tacplus ]; then
+ mkdir others && cd others
+
+ # build libtacplus-map
+ sudo apt-get install -y libaudit-dev
+ git clone https://github.com/vyos/libtacplus-map.git
+ cd libtacplus-map
+ git reset --hard fe47203
+ # Make it buildable for newer gcc version:
+ # https://stackoverflow.com/questions/47185819/building-debian-ubuntu-packages-with-old-gcc-cflag-adjustment
+ # map_tacplus_user.c:388:31: error: the comparison will always evaluate as 'true' for the address of 'tac_mappedname' will never be NULL [-Werror=address]
+ # man 1 dpkg-buildflags
+ export DEB_CFLAGS_APPEND="-Wno-address -Wno-stringop-truncation"
+ /my-build-scripts/generic-build-script.sh
+ cd .. && sudo dpkg -i *.deb
+
+ # build libnss-tacplus 1.4.3, install, throw away
+ mkdir temp && cd temp
+ git clone https://github.com/vyos/libpam-tacplus.git
+ cd libpam-tacplus
+ git reset --hard 0d38f9b
+ /my-build-scripts/generic-build-script.sh
+ cd .. && sudo dpkg -i *.deb
+ cd .. && sudo rm -rf temp
+
+ # build libnss-tacplus
+ git clone https://github.com/vyos/libnss-tacplus.git
+ cd libnss-tacplus
+ git reset --hard 049d284
+ /my-build-scripts/generic-build-script.sh
+fi