Source: ghdl
Followup-For: Bug #916475
Hello.
> honestly the whole link script looks like a hack to me, I prefer the
> way it was before.
I agree that an executable debian/libghdl-dev.links is a last resort,
but a reader discovering the package does not need to
* guess that usr/lib/*/libghdl.so is a symbolic link from its name
(this is only evident if you have already packaged a library)
* search where (debian/tmp/)?usr/lib/*/libghdl.so comes from (not
evident at all, even assuming familiarity with the dh sequence).
The debian/libghdl-dev.links I am suggesting is complex, but handles a
single task (ln -s) and does not require the reader to remember each
detail of the far more complex debian/rules to understand what
happens.
Of course, the decision is yours eventually, and I may rebase the
other commits if you choose to keep the sequence as it is.
If so, I suggest to replace
usr/lib/*/libghdl.so
in debian/libghdl-dev.install with
usr/lib/${DEB_HOST_MULTIARCH}/libghdl.so
>From 734fee62a113b8c36c929f8ee739243d67d64a34 Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Wed, 14 Dec 2022 13:48:00 +0100
Subject: [PATCH 01/14] Install the usr/bin/ghdl wrapper with dh_install
directly
---
debian/{ghdl.wrapper => bin/ghdl} | 0
debian/ghdl-common.install | 3 ++-
debian/rules | 1 -
3 files changed, 2 insertions(+), 2 deletions(-)
rename debian/{ghdl.wrapper => bin/ghdl} (100%)
mode change 100644 => 100755
diff --git a/debian/ghdl.wrapper b/debian/bin/ghdl
old mode 100644
new mode 100755
similarity index 100%
rename from debian/ghdl.wrapper
rename to debian/bin/ghdl
diff --git a/debian/ghdl-common.install b/debian/ghdl-common.install
index 1d4197f0..5ff3ad65 100644
--- a/debian/ghdl-common.install
+++ b/debian/ghdl-common.install
@@ -1,4 +1,5 @@
-usr/bin/ghdl
+debian/bin/ghdl usr/bin/
+
usr/lib/ghdl/src
usr/lib/ghdl/include/ghdl/vpi_user.h
usr/lib/ghdl/include/ghdl/vhpi_user.h
diff --git a/debian/rules b/debian/rules
index dcece304..217fd601 100755
--- a/debian/rules
+++ b/debian/rules
@@ -91,7 +91,6 @@ override_dh_auto_install: $(foreach backend,$(BACKENDS),$(STAMPSDIR)/install-$(b
@echo ------------------------------------------------------------
@echo Common install final steps
@echo ------------------------------------------------------------
- install -pD debian/ghdl.wrapper $(CURDIR)/debian/tmp/usr/bin/ghdl
cd debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH) && ln -s libghdl-*.so libghdl.so
$(RM) debian/tmp/usr/lib/ghdl/src/ieee2008/LICENSE
--
2.39.2
>From af3bf32c7959c411658b9a0adc94024d16bb1bed Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Mon, 2 Oct 2023 13:43:54 +0200
Subject: [PATCH 02/14] Install sources into usr/lib/ghdl with dh_install
directly
---
debian/ghdl-common.install | 8 +++++++-
debian/not-installed | 3 +++
debian/rules | 7 -------
3 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/debian/ghdl-common.install b/debian/ghdl-common.install
index 5ff3ad65..36ec5acf 100644
--- a/debian/ghdl-common.install
+++ b/debian/ghdl-common.install
@@ -1,5 +1,11 @@
debian/bin/ghdl usr/bin/
-usr/lib/ghdl/src
+# The wildcard matches backend(s).
+usr/lib/ghdl/*/vhdl/src/ieee/ usr/lib/ghdl/src/
+usr/lib/ghdl/*/vhdl/src/ieee2008/*.vhdl usr/lib/ghdl/src/ieee2008/
+usr/lib/ghdl/*/vhdl/src/std/ usr/lib/ghdl/src/
+usr/lib/ghdl/*/vhdl/src/synopsys/ usr/lib/ghdl/src/
+usr/lib/ghdl/*/vhdl/src/upf/ usr/lib/ghdl/src/
+
usr/lib/ghdl/include/ghdl/vpi_user.h
usr/lib/ghdl/include/ghdl/vhpi_user.h
diff --git a/debian/not-installed b/debian/not-installed
index 97006213..1f68b482 100644
--- a/debian/not-installed
+++ b/debian/not-installed
@@ -3,10 +3,13 @@
# file from its original location directly to debian/PACKAGE/usr/bin.
usr/bin/ghdl-gcc
+# The wildcard matches backend(s).
usr/lib/ghdl/*/vhdl/ansi_color.sh
+usr/lib/ghdl/*/vhdl/src/ieee2008/LICENSE
usr/lib/ghdl/*/vhdl/vendors
usr/lib/ghdl/*/libghw.so
usr/lib/ghdl/*/libghdl.link
+
usr/lib/ghdl/include/ghdl/libghw.h
usr/lib/ghdl/gcc/libexec
diff --git a/debian/rules b/debian/rules
index 217fd601..346ea20f 100755
--- a/debian/rules
+++ b/debian/rules
@@ -92,7 +92,6 @@ override_dh_auto_install: $(foreach backend,$(BACKENDS),$(STAMPSDIR)/install-$(b
@echo Common install final steps
@echo ------------------------------------------------------------
cd debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH) && ln -s libghdl-*.so libghdl.so
- $(RM) debian/tmp/usr/lib/ghdl/src/ieee2008/LICENSE
override_dh_dwz:
# dwz currently has problems with some debug sections created by the
@@ -151,8 +150,6 @@ $(STAMPSDIR)/install-mcode: $(STAMPSDIR)/build-mcode
@echo Moving parts to required locations
@echo ------------------------------------------------------------
mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
- $(RM) -r debian/tmp/usr/lib/ghdl/src
- mv debian/tmp/usr/lib/ghdl/mcode/vhdl/src debian/tmp/usr/lib/ghdl
ln -s ../../src debian/tmp/usr/lib/ghdl/mcode/vhdl/src
mv debian/tmp/usr/lib/ghdl/mcode/libghdl-*.so debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
mv debian/tmp/usr/lib/ghdl/mcode/libghdl.a debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
@@ -207,8 +204,6 @@ $(STAMPSDIR)/install-llvm: $(STAMPSDIR)/build-llvm
@echo Moving parts to required locations
@echo ------------------------------------------------------------
mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
- $(RM) -r debian/tmp/usr/lib/ghdl/src
- mv debian/tmp/usr/lib/ghdl/llvm/vhdl/src debian/tmp/usr/lib/ghdl
ln -s ../../src debian/tmp/usr/lib/ghdl/llvm/vhdl/src
mv debian/tmp/usr/lib/ghdl/llvm/libghdl-*.so debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
mv debian/tmp/usr/lib/ghdl/llvm/libghdl.a debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
@@ -297,8 +292,6 @@ $(STAMPSDIR)/install-gcc: $(STAMPSDIR)/build-gcc
@echo Moving parts to required locations
@echo ------------------------------------------------------------
mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
- $(RM) -r debian/tmp/usr/lib/ghdl/src
- mv debian/tmp/usr/lib/ghdl/gcc/vhdl/src debian/tmp/usr/lib/ghdl
ln -s ../../src debian/tmp/usr/lib/ghdl/gcc/vhdl/src
mv debian/tmp/usr/lib/ghdl/gcc/libghdl-*.so debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
mv debian/tmp/usr/lib/ghdl/gcc/libghdl.a debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
--
2.39.2
>From 6d6be637154a54be26a6fab1a74a2efd846e37bd Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Mon, 2 Oct 2023 13:46:40 +0200
Subject: [PATCH 03/14] Install development symbolic link to shared library
with dh_link directly
---
debian/libghdl-dev.install | 1 -
debian/libghdl-dev.links | 33 +++++++++++++++++++++++++++++++++
debian/rules | 5 -----
3 files changed, 33 insertions(+), 6 deletions(-)
create mode 100755 debian/libghdl-dev.links
diff --git a/debian/libghdl-dev.install b/debian/libghdl-dev.install
index cbcf11a7..ea834081 100644
--- a/debian/libghdl-dev.install
+++ b/debian/libghdl-dev.install
@@ -1,3 +1,2 @@
usr/lib/*/libghdl.a
-usr/lib/*/libghdl.so
usr/lib/ghdl/include/ghdl/synth*.h usr/include/ghdl
diff --git a/debian/libghdl-dev.links b/debian/libghdl-dev.links
new file mode 100755
index 00000000..b80879f5
--- /dev/null
+++ b/debian/libghdl-dev.links
@@ -0,0 +1,33 @@
+#!/bin/sh
+set -C -e -f -u
+
+# The intent is to create a symbolic link
+# named usr/lib/DEB_HOST_MULTIARCH/libghdl.so
+# in the libghdl-dev package
+# referencing usr/lib/DEB_HOST_MULTIARCH/libghdl-VERSIONA.so
+# in the libghdl-VERSIONB package.
+
+# The problem is to compute DEB_HOST_MULTIARCH and VERSIONA.
+
+# DEB_HOST_MULTIARCH may be unset or wrong in this shell script. But
+# debhelper will expand it later, so we output ${DEB_HOST_MULTIARCH}.
+
+# Ideally, VERSIONA would be deduced from
+# debian/libghdl-VERSIONB/usr/lib/DEB_HOST_MULTIARCH/libghdl-*.so
+# but
+# * VERSIONB is not easy to guess from here
+# * dh_install may install libghdl-VERSIONB after libghdl-dev.
+
+# So we compute VERSIONA from
+# debian/tmp/usr/lib/ghdl/BACKEND/libghdl-*.so
+# because at least the dh_auto_install step is completed.
+
+# Depending on the backend selected by active build profiles, between
+# 1 and 3 copies may exist after the dh_auto_install step, even if
+# debian/libghdl-VERSIONB.install only installs one of them.
+
+echo -n 'usr/lib/${DEB_HOST_MULTIARCH}/'
+find debian/tmp/usr/lib/ghdl/ \
+ -mindepth 2 -maxdepth 2 -type f -name 'libghdl-*.so' \
+ -printf %f -quit
+echo ' usr/lib/${DEB_HOST_MULTIARCH}/libghdl.so'
diff --git a/debian/rules b/debian/rules
index 346ea20f..9eeff819 100755
--- a/debian/rules
+++ b/debian/rules
@@ -87,11 +87,6 @@ override_dh_auto_configure: $(foreach backend,$(BACKENDS),$(STAMPSDIR)/configure
override_dh_auto_build: $(foreach backend,$(BACKENDS),$(STAMPSDIR)/build-$(backend))
override_dh_auto_install: $(foreach backend,$(BACKENDS),$(STAMPSDIR)/install-$(backend))
- @echo
- @echo ------------------------------------------------------------
- @echo Common install final steps
- @echo ------------------------------------------------------------
- cd debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH) && ln -s libghdl-*.so libghdl.so
override_dh_dwz:
# dwz currently has problems with some debug sections created by the
--
2.39.2
>From 51558e38897bff630be019a0a5b4dfa50c6df9ce Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Wed, 14 Dec 2022 14:02:42 +0100
Subject: [PATCH 04/14] Install usr/lib/ghdl/backend/vhdl/src with dh_link
directly
---
debian/ghdl-gcc.install | 1 -
debian/ghdl-gcc.links | 3 +++
debian/ghdl-llvm.install | 1 -
debian/ghdl-llvm.links | 3 +++
debian/ghdl-mcode.install | 1 -
debian/ghdl-mcode.links | 3 +++
debian/rules | 3 ---
7 files changed, 9 insertions(+), 6 deletions(-)
diff --git a/debian/ghdl-gcc.install b/debian/ghdl-gcc.install
index e2383ee6..a76c8645 100644
--- a/debian/ghdl-gcc.install
+++ b/debian/ghdl-gcc.install
@@ -7,6 +7,5 @@ usr/lib/ghdl/gcc/vhdl/*.a
usr/lib/ghdl/gcc/vhdl/grt.*
usr/lib/ghdl/gcc/vhdl/grt-*.*
-usr/lib/ghdl/gcc/vhdl/src
usr/lib/ghdl/gcc/vhdl/std
usr/lib/ghdl/gcc/vhdl/ieee
diff --git a/debian/ghdl-gcc.links b/debian/ghdl-gcc.links
index 6ba63a7b..605c1aca 100644
--- a/debian/ghdl-gcc.links
+++ b/debian/ghdl-gcc.links
@@ -1 +1,4 @@
+# The actual files are provided by the ghdl-common package.
+usr/lib/ghdl/src/ usr/lib/ghdl/gcc/vhdl/src
+
usr/share/man/man1/ghdl.1.gz usr/share/man/man1/ghdl-gcc.1.gz
diff --git a/debian/ghdl-llvm.install b/debian/ghdl-llvm.install
index b9abd68e..d2236f97 100644
--- a/debian/ghdl-llvm.install
+++ b/debian/ghdl-llvm.install
@@ -6,6 +6,5 @@ usr/lib/ghdl/llvm/vhdl/*.a
usr/lib/ghdl/llvm/vhdl/grt.*
usr/lib/ghdl/llvm/vhdl/grt-*.*
-usr/lib/ghdl/llvm/vhdl/src
usr/lib/ghdl/llvm/vhdl/std
usr/lib/ghdl/llvm/vhdl/ieee
diff --git a/debian/ghdl-llvm.links b/debian/ghdl-llvm.links
index 52b5924a..00bf63ae 100644
--- a/debian/ghdl-llvm.links
+++ b/debian/ghdl-llvm.links
@@ -1 +1,4 @@
+# The actual files are provided by the ghdl-common package.
+usr/lib/ghdl/src/ usr/lib/ghdl/llvm/vhdl/src
+
usr/share/man/man1/ghdl.1.gz usr/share/man/man1/ghdl-llvm.1.gz
diff --git a/debian/ghdl-mcode.install b/debian/ghdl-mcode.install
index 84e7ea12..176179f6 100644
--- a/debian/ghdl-mcode.install
+++ b/debian/ghdl-mcode.install
@@ -1,5 +1,4 @@
usr/bin/ghdl-mcode
usr/lib/ghdl/mcode/libghdlvpi.so
-usr/lib/ghdl/mcode/vhdl/src
usr/lib/ghdl/mcode/vhdl/std
usr/lib/ghdl/mcode/vhdl/ieee
diff --git a/debian/ghdl-mcode.links b/debian/ghdl-mcode.links
index de694b94..72153f5f 100644
--- a/debian/ghdl-mcode.links
+++ b/debian/ghdl-mcode.links
@@ -1 +1,4 @@
+# The actual files are provided by the ghdl-common package.
+usr/lib/ghdl/src/ usr/lib/ghdl/mcode/vhdl/src
+
usr/share/man/man1/ghdl.1.gz usr/share/man/man1/ghdl-mcode.1.gz
diff --git a/debian/rules b/debian/rules
index 9eeff819..62293134 100755
--- a/debian/rules
+++ b/debian/rules
@@ -145,7 +145,6 @@ $(STAMPSDIR)/install-mcode: $(STAMPSDIR)/build-mcode
@echo Moving parts to required locations
@echo ------------------------------------------------------------
mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
- ln -s ../../src debian/tmp/usr/lib/ghdl/mcode/vhdl/src
mv debian/tmp/usr/lib/ghdl/mcode/libghdl-*.so debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
mv debian/tmp/usr/lib/ghdl/mcode/libghdl.a debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
@@ -199,7 +198,6 @@ $(STAMPSDIR)/install-llvm: $(STAMPSDIR)/build-llvm
@echo Moving parts to required locations
@echo ------------------------------------------------------------
mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
- ln -s ../../src debian/tmp/usr/lib/ghdl/llvm/vhdl/src
mv debian/tmp/usr/lib/ghdl/llvm/libghdl-*.so debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
mv debian/tmp/usr/lib/ghdl/llvm/libghdl.a debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
@@ -287,7 +285,6 @@ $(STAMPSDIR)/install-gcc: $(STAMPSDIR)/build-gcc
@echo Moving parts to required locations
@echo ------------------------------------------------------------
mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
- ln -s ../../src debian/tmp/usr/lib/ghdl/gcc/vhdl/src
mv debian/tmp/usr/lib/ghdl/gcc/libghdl-*.so debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
mv debian/tmp/usr/lib/ghdl/gcc/libghdl.a debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
--
2.39.2
>From 49fa56a58776f767a050163cfbb2a5b6758cc284 Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Mon, 2 Oct 2023 15:53:20 +0200
Subject: [PATCH 05/14] Install shared and static libraries with dh_install
directly
Refine pattern in ghdl-gcc.install because libghdl-*.so now matches
during the dh_install step.
---
debian/ghdl-gcc.install | 3 ++-
debian/libghdl-3-0-0.install | 3 ++-
debian/libghdl-dev.install | 4 +++-
debian/rules | 21 ---------------------
4 files changed, 7 insertions(+), 24 deletions(-)
diff --git a/debian/ghdl-gcc.install b/debian/ghdl-gcc.install
index a76c8645..77b43184 100644
--- a/debian/ghdl-gcc.install
+++ b/debian/ghdl-gcc.install
@@ -1,6 +1,7 @@
usr/lib/ghdl/gcc/bin/ghdl-gcc usr/bin
usr/lib/ghdl/gcc/lib/gcc/*/*/ghdl1
-usr/lib/ghdl/gcc/*.so
+usr/lib/ghdl/gcc/libghdlvpi.so
+usr/lib/ghdl/gcc/libghw.so
usr/lib/ghdl/gcc/lib/ghdl/libbacktrace.a usr/lib/ghdl/gcc/vhdl
usr/lib/ghdl/gcc/vhdl/*.a
diff --git a/debian/libghdl-3-0-0.install b/debian/libghdl-3-0-0.install
index 4d03fcb0..022eec3c 100644
--- a/debian/libghdl-3-0-0.install
+++ b/debian/libghdl-3-0-0.install
@@ -1 +1,2 @@
-usr/lib/*/libghdl-*.so
+# The wildcard matches backend(s).
+usr/lib/ghdl/*/libghdl-*.so usr/lib/${DEB_HOST_MULTIARCH}/
diff --git a/debian/libghdl-dev.install b/debian/libghdl-dev.install
index ea834081..5054a492 100644
--- a/debian/libghdl-dev.install
+++ b/debian/libghdl-dev.install
@@ -1,2 +1,4 @@
-usr/lib/*/libghdl.a
+# The wildcard matches backend(s).
+usr/lib/ghdl/*/libghdl.a usr/lib/${DEB_HOST_MULTIARCH}/
+
usr/lib/ghdl/include/ghdl/synth*.h usr/include/ghdl
diff --git a/debian/rules b/debian/rules
index 62293134..d22c4b5d 100755
--- a/debian/rules
+++ b/debian/rules
@@ -140,13 +140,6 @@ $(STAMPSDIR)/install-mcode: $(STAMPSDIR)/build-mcode
@echo Installing with mcode backend
@echo ------------------------------------------------------------
$(MAKE) -C $(BUILDDIR)/mcode install DESTDIR=../../debian/tmp
- @echo
- @echo ------------------------------------------------------------
- @echo Moving parts to required locations
- @echo ------------------------------------------------------------
- mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
- mv debian/tmp/usr/lib/ghdl/mcode/libghdl-*.so debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
- mv debian/tmp/usr/lib/ghdl/mcode/libghdl.a debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
$(STAMPSDIR)/test-mcode: $(STAMPSDIR)/build-mcode
dh_testdir
@@ -193,13 +186,6 @@ $(STAMPSDIR)/install-llvm: $(STAMPSDIR)/build-llvm
@echo Installing with llvm backend
@echo ------------------------------------------------------------
$(MAKE) -C $(BUILDDIR)/llvm install DESTDIR=../../debian/tmp
- @echo
- @echo ------------------------------------------------------------
- @echo Moving parts to required locations
- @echo ------------------------------------------------------------
- mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
- mv debian/tmp/usr/lib/ghdl/llvm/libghdl-*.so debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
- mv debian/tmp/usr/lib/ghdl/llvm/libghdl.a debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
$(STAMPSDIR)/test-llvm: $(STAMPSDIR)/build-llvm
dh_testdir
@@ -280,13 +266,6 @@ $(STAMPSDIR)/install-gcc: $(STAMPSDIR)/build-gcc
ln -sf ../lib/ghdl/gcc/bin/ghdl-gcc $(CURDIR)/debian/tmp/usr/bin/ghdl-gcc
$(MAKE) -C $(BUILDDIR)/gcc/build install DESTDIR=$(CURDIR)/debian/tmp
$(MAKE) -C $(BUILDDIR)/gcc install DESTDIR=$(CURDIR)/debian/tmp
- @echo
- @echo ------------------------------------------------------------
- @echo Moving parts to required locations
- @echo ------------------------------------------------------------
- mkdir -p debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)
- mv debian/tmp/usr/lib/ghdl/gcc/libghdl-*.so debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
- mv debian/tmp/usr/lib/ghdl/gcc/libghdl.a debian/tmp/usr/lib/$(DEB_HOST_MULTIARCH)/
$(STAMPSDIR)/test-gcc: $(STAMPSDIR)/build-gcc
dh_testdir
--
2.39.2
>From b0083c31cdccd4062e66a14c9bd05bd328cf9580 Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Mon, 2 Oct 2023 14:41:22 +0200
Subject: [PATCH 06/14] debian/rules: replace shell constructs with Make
equivalents
Prefer Make variables and conditionals to shell constructs so that the
log explicitly shows what is executed.
Prefer a separate recipe line for each command, so that each exit
status is checked, and comments can be inserted.
---
debian/rules | 31 ++++++++++++++++++-------------
1 file changed, 18 insertions(+), 13 deletions(-)
diff --git a/debian/rules b/debian/rules
index d22c4b5d..3ae0ffaa 100755
--- a/debian/rules
+++ b/debian/rules
@@ -205,6 +205,10 @@ $(STAMPSDIR)/test-llvm: $(STAMPSDIR)/build-llvm
touch $@
+gcc_local_patches_dir := debian/gcc-patches/gcc-$(DEB_GNAT_VERSION)
+# Ignore comment lines, extensions like .diff and options like -p0.
+gcc_local_patches != sed '/^\#/d; s/\..*//' $(gcc_local_patches_dir)/series
+
$(STAMPSDIR)/configure-gcc:
dh_testdir
mkdir -p $(BUILDDIR)/gcc $(STAMPSDIR)
@@ -216,23 +220,24 @@ $(STAMPSDIR)/configure-gcc:
# We have to disable the gcc-verbose-lto-link patch since it replaces
# the LLINKER value with one that runs the linker under /usr/bin/time
# and the spaces are not escaped properly somewhere on the ghdl side.
- set -e && \
+ ln -fs ${GCC_DIR}/gcc-*.tar.* $(BUILDDIR)/gcc
+ cp -a ${GCC_DIR}/debian/ $(BUILDDIR)/gcc
+ ifneq (,$(gcc_local_patches))
+ cp -n $(gcc_local_patches_dir)/*.diff $(BUILDDIR)/gcc/debian/patches/
+ cat $(gcc_local_patches_dir)/series >> $(BUILDDIR)/gcc/debian/patches/series
+ sed -i \
+ "s/\(^series_stamp.*\)/debian_patches += $(gcc_local_patches)\n\n\1/" \
+ $(BUILDDIR)/gcc/debian/rules.patch
+ endif
+ echo -n > $(BUILDDIR)/gcc/debian/patches/gcc-verbose-lto-link.diff
+ $(MAKE) -C$(BUILDDIR)/gcc -fdebian/rules patch
cd $(BUILDDIR)/gcc && \
- ln -sf ${GCC_DIR}/gcc-*.tar.* && \
- cp -a ${GCC_DIR}/debian/ . && \
- if [ -n "$$(grep -v '^\#' ${CURDIR}/debian/gcc-patches/gcc-${DEB_GNAT_VERSION}/series)" ]; then \
- cp -n ${CURDIR}/debian/gcc-patches/gcc-${DEB_GNAT_VERSION}/*.diff debian/patches/ && \
- cat ${CURDIR}/debian/gcc-patches/gcc-${DEB_GNAT_VERSION}/series >> debian/patches/series && \
- sed -i "s/\(^series_stamp.*\)/debian_patches += $$(grep -v '^#' ${CURDIR}/debian/gcc-patches/gcc-$(DEB_GNAT_VERSION)/series|sed 's/\..*//'|tr '\n' ' ')\n\n\1/" debian/rules.patch ; \
- fi && \
- echo -n > $(BUILDDIR)/gcc/debian/patches/gcc-verbose-lto-link.diff && \
- debian/rules patch && \
../../configure --srcdir=../.. $(common_configure_arguments) \
--libdir=lib/ghdl/gcc \
--libghdldir=lib/ghdl/gcc/vhdl \
- --with-gcc=src && \
- make copy-sources && \
- $(MAKE) -f debian/rules2 configure PF=usr/lib/ghdl/gcc with_bootstrap=off \
+ --with-gcc=src
+ make -C$(BUILDDIR)/gcc copy-sources
+ $(MAKE) -C$(BUILDDIR)/gcc -f debian/rules2 configure PF=usr/lib/ghdl/gcc with_bootstrap=off \
with_cc1=no with_dev=no separate_lang=yes enabled_languages=vhdl \
with_common_libs=no with_common_pkgs=no \
with_check="skipped for GHDL build"
--
2.39.2
>From 05d4fe9cd9bcdc1f9b32ea9f4275bdecf3a82100 Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Sun, 1 Oct 2023 01:14:25 +0200
Subject: [PATCH 07/14] Delegate computation of Built-Using to dh-builtusing
---
debian/control | 7 ++++---
debian/rules | 9 ---------
2 files changed, 4 insertions(+), 12 deletions(-)
diff --git a/debian/control b/debian/control
index 0e19560e..a354cf0d 100644
--- a/debian/control
+++ b/debian/control
@@ -5,6 +5,7 @@ Maintainer: Debian Electronics Team <[email protected]
Uploaders: Andreas Bombe <[email protected]>
Build-Depends: debhelper-compat (= 13),
dh-ada-library (>= 8.1),
+ dh-sequence-builtusing,
gnat-12, gcc-12, g++-12,
gcc-12-source <!pkg.ghdl.nogcc>,
libisl-dev (>= 0.14) <!pkg.ghdl.nogcc>,
@@ -80,7 +81,7 @@ Description: VHDL compiler/simulator (mcode backend)
Package: ghdl-gcc
Architecture: any
Build-Profiles: <!pkg.ghdl.nogcc>
-Built-Using: ${Built-Using-GCC}
+Built-Using: ${dh-builtusing:gcc-S-source}
Depends: ghdl-common (= ${binary:Version}), ${shlibs:Depends}, ${misc:Depends},
gcc, zlib1g-dev
Description: VHDL compiler/simulator (GCC backend)
@@ -122,7 +123,7 @@ Description: VHDL compiler/simulator (tools)
Package: libghdl-3-0-0
Architecture: any
-Built-Using: ${Built-Using-GCC}
+Built-Using: ${dh-builtusing:gcc-S-source} <!pkg.ghdl.nogcc>
Depends: ${shlibs:Depends}, ${misc:Depends}
Multi-Arch: same
Description: VHDL compiler/simulator (shared library)
@@ -135,7 +136,7 @@ Description: VHDL compiler/simulator (shared library)
Package: libghdl-dev
Architecture: any
-Built-Using: ${Built-Using-GCC}
+Built-Using: ${dh-builtusing:gcc-S-source} <!pkg.ghdl.nogcc>
Depends: libghdl-3-0-0 (= ${binary:Version}), ${misc:Depends}
Multi-Arch: same
Description: VHDL compiler/simulator (library development files)
diff --git a/debian/rules b/debian/rules
index 3ae0ffaa..91b50e6a 100755
--- a/debian/rules
+++ b/debian/rules
@@ -102,15 +102,6 @@ override_dh_strip:
dh_strip -N libghdl-3-0-0
dh_strip -p libghdl-3-0-0 --dbgsym-migration='libghdl-2-0-0'
-override_dh_gencontrol:
-ifneq ($(filter gcc,$(BACKENDS)),)
- dh_gencontrol -- -VBuilt-Using-GCC="$(shell dpkg-query -f '$${Source} (= $${Version})' -W gcc-$(DEB_GNAT_VERSION)-source)"
-else
- dh_gencontrol
-endif
-
-
-
$(STAMPSDIR)/configure-mcode:
dh_testdir
mkdir -p $(BUILDDIR)/mcode $(STAMPSDIR)
--
2.39.2
>From 7f674909eb3de8f10eb8d1e662c709c48e059257 Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Sat, 31 Dec 2022 13:26:58 +0100
Subject: [PATCH 08/14] Drop obsolete gcc-10 patch
---
debian/gcc-patches/gcc-10/fix_ghdl_ppc64.diff | 42 -------------------
debian/gcc-patches/gcc-10/series | 1 -
2 files changed, 43 deletions(-)
delete mode 100644 debian/gcc-patches/gcc-10/fix_ghdl_ppc64.diff
delete mode 100644 debian/gcc-patches/gcc-10/series
diff --git a/debian/gcc-patches/gcc-10/fix_ghdl_ppc64.diff b/debian/gcc-patches/gcc-10/fix_ghdl_ppc64.diff
deleted file mode 100644
index 45e9c845..00000000
--- a/debian/gcc-patches/gcc-10/fix_ghdl_ppc64.diff
+++ /dev/null
@@ -1,42 +0,0 @@
-Description: Fix ppc64* FTBFS of ghdl's gcc backend
- On Power, ghdl fails to build from source with the following error :
-
-/<<BUILDDIR>>/ghdl-0.35+git20180503+dfsg/builddir/gcc/gccbuild/gcc/ghdl -a --GHDL1=/<<BUILDDIR>>/ghdl-0.35+git20180503+dfsg/builddir/gcc/gccbuild/gcc/ghdl1 --std=87 --bootstrap --work=std ../../src/std/textio.v87
-/<<BUILDDIR>>/ghdl-0.35+git20180503+dfsg/builddir/gcc/lib/ghdl/gcc/std/v87/../../src/std/textio.v87: In function 'std__textio__ELAB_SPEC':
-/<<BUILDDIR>>/ghdl-0.35+git20180503+dfsg/builddir/gcc/lib/ghdl/gcc/std/v87/../../src/std/textio.v87:1:0: internal compiler error: in rs6000_output_function_epilogue, at config/rs6000/rs6000.c:31660
- -- Std.Textio package declaration. This file is part of GHDL.
-
-0x10a330ef rs6000_output_function_epilogue
- ../../src/gcc/config/rs6000/rs6000.c:31660
-0x103723c7 final_end_function()
- ../../src/gcc/final.c:1919
-0x10377777 rest_of_handle_final
- ../../src/gcc/final.c:4492
-0x10377777 execute
- ../../src/gcc/final.c:4562
-Please submit a full bug report,
-with preprocessed source if appropriate.
-Please include the complete backtrace with any bug report.
-See <https://gcc.gnu.org/bugs/> for instructions.
-/<<BUILDDIR>>/ghdl-0.35+git20180503+dfsg/builddir/gcc/gccbuild/gcc/ghdl: exec error
-
- It seems that Power specific code rs6000.c has no knowledge of the language_string/lang_hooks.name
- which is defined in ortho-lang-7.c:#define LANG_HOOKS_NAME "vhdl"
- So adding vhdl in the language type searching. Not sure though if 0 is correct.
-Author: Frédéric Bonnard <[email protected]>
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
-Index: gcc/src/gcc/config/rs6000/rs6000.c
-===================================================================
---- gcc.orig/src/gcc/config/rs6000/rs6000-logue.c 2020-12-05 11:27:23.979679736 +0000
-+++ gcc/src/gcc/config/rs6000/rs6000-logue.c 2020-12-05 11:28:09.323595170 +0000
-@@ -5268,7 +5268,8 @@ rs6000_output_function_epilogue (FILE *f
- || ! strcmp (language_string, "GNU GIMPLE")
- || ! strcmp (language_string, "GNU Go")
- || ! strcmp (language_string, "GNU D")
-- || ! strcmp (language_string, "libgccjit"))
-+ || ! strcmp (language_string, "libgccjit")
-+ || ! strcmp (language_string, "vhdl"))
- i = 0;
- else if (! strcmp (language_string, "GNU F77")
- || lang_GNU_Fortran ())
diff --git a/debian/gcc-patches/gcc-10/series b/debian/gcc-patches/gcc-10/series
deleted file mode 100644
index c3182338..00000000
--- a/debian/gcc-patches/gcc-10/series
+++ /dev/null
@@ -1 +0,0 @@
-fix_ghdl_ppc64.diff -p3
--
2.39.2
>From 56229aa2fc5a59557729273d0759dff08e7c337e Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Mon, 2 Oct 2023 15:18:07 +0200
Subject: [PATCH 09/14] Store stamp files in the current directory
Dh_clean removes them by default, and they are convenient to directly
run a target during development.
The new targets have a sensible length, there is no need for a
shortcut anymore.
Adapt the name of the install target.
---
debian/rules | 62 ++++++++++++++++------------------------------------
1 file changed, 19 insertions(+), 43 deletions(-)
diff --git a/debian/rules b/debian/rules
index 91b50e6a..9ce5a768 100755
--- a/debian/rules
+++ b/debian/rules
@@ -40,7 +40,6 @@ endif
BUILDDIR := $(CURDIR)/builddir
TESTRUNDIR := $(CURDIR)/testrundir
-STAMPSDIR := $(BUILDDIR)/stamps
# Common arguments for all calls to ./configure.
# The order is the same than there.
@@ -82,11 +81,10 @@ override_dh_installdocs:
dh_installdocs -pghdl -pghdl-mcode -pghdl-llvm -pghdl-gcc --link-doc=ghdl-common
dh_installdocs --remaining-packages
-override_dh_auto_configure: $(foreach backend,$(BACKENDS),$(STAMPSDIR)/configure-$(backend))
-
-override_dh_auto_build: $(foreach backend,$(BACKENDS),$(STAMPSDIR)/build-$(backend))
-
-override_dh_auto_install: $(foreach backend,$(BACKENDS),$(STAMPSDIR)/install-$(backend))
+override_dh_auto_configure: $(BACKENDS:%=configure-%-stamp)
+override_dh_auto_build : $(BACKENDS:%=build-%-stamp)
+override_dh_auto_install : $(BACKENDS:%=install-%)
+override_dh_auto_test : $(BACKENDS:%=test-%-stamp)
override_dh_dwz:
# dwz currently has problems with some debug sections created by the
@@ -96,15 +94,13 @@ override_dh_dwz:
# libghdlvpi.so and runs into assertions, so disable it altogether for
# now.
-override_dh_auto_test: $(foreach backend,$(BACKENDS),$(STAMPSDIR)/test-$(backend))
-
override_dh_strip:
dh_strip -N libghdl-3-0-0
dh_strip -p libghdl-3-0-0 --dbgsym-migration='libghdl-2-0-0'
-$(STAMPSDIR)/configure-mcode:
+configure-mcode-stamp:
dh_testdir
- mkdir -p $(BUILDDIR)/mcode $(STAMPSDIR)
+ mkdir -p $(BUILDDIR)/mcode
@echo
@echo ------------------------------------------------------------
@echo Configuring with mcode backend
@@ -115,7 +111,7 @@ $(STAMPSDIR)/configure-mcode:
--libghdldir=lib/ghdl/mcode/vhdl
touch $@
-$(STAMPSDIR)/build-mcode: $(STAMPSDIR)/configure-mcode
+build-mcode-stamp: configure-mcode-stamp
dh_testdir
@echo
@echo ------------------------------------------------------------
@@ -124,7 +120,7 @@ $(STAMPSDIR)/build-mcode: $(STAMPSDIR)/configure-mcode
$(MAKE) -C $(BUILDDIR)/mcode
touch $@
-$(STAMPSDIR)/install-mcode: $(STAMPSDIR)/build-mcode
+install-mcode: build-mcode-stamp
dh_testdir
@echo
@echo ------------------------------------------------------------
@@ -132,7 +128,7 @@ $(STAMPSDIR)/install-mcode: $(STAMPSDIR)/build-mcode
@echo ------------------------------------------------------------
$(MAKE) -C $(BUILDDIR)/mcode install DESTDIR=../../debian/tmp
-$(STAMPSDIR)/test-mcode: $(STAMPSDIR)/build-mcode
+test-mcode-stamp: build-mcode-stamp
dh_testdir
@echo
@echo ------------------------------------------------------------
@@ -147,9 +143,9 @@ $(STAMPSDIR)/test-mcode: $(STAMPSDIR)/build-mcode
touch $@
-$(STAMPSDIR)/configure-llvm:
+configure-llvm-stamp:
dh_testdir
- mkdir -p $(BUILDDIR)/llvm $(STAMPSDIR)
+ mkdir -p $(BUILDDIR)/llvm
@echo
@echo ------------------------------------------------------------
@echo Configuring with llvm backend
@@ -161,7 +157,7 @@ $(STAMPSDIR)/configure-llvm:
--with-llvm-config
touch $@
-$(STAMPSDIR)/build-llvm: $(STAMPSDIR)/configure-llvm
+build-llvm-stamp: configure-llvm-stamp
dh_testdir
@echo
@echo ------------------------------------------------------------
@@ -170,7 +166,7 @@ $(STAMPSDIR)/build-llvm: $(STAMPSDIR)/configure-llvm
$(MAKE) -C $(BUILDDIR)/llvm
touch $@
-$(STAMPSDIR)/install-llvm: $(STAMPSDIR)/build-llvm
+install-llvm: build-llvm-stamp
dh_testdir
@echo
@echo ------------------------------------------------------------
@@ -178,7 +174,7 @@ $(STAMPSDIR)/install-llvm: $(STAMPSDIR)/build-llvm
@echo ------------------------------------------------------------
$(MAKE) -C $(BUILDDIR)/llvm install DESTDIR=../../debian/tmp
-$(STAMPSDIR)/test-llvm: $(STAMPSDIR)/build-llvm
+test-llvm-stamp: build-llvm-stamp
dh_testdir
@echo
@echo ------------------------------------------------------------
@@ -200,9 +196,9 @@ gcc_local_patches_dir := debian/gcc-patches/gcc-$(DEB_GNAT_VERSION)
# Ignore comment lines, extensions like .diff and options like -p0.
gcc_local_patches != sed '/^\#/d; s/\..*//' $(gcc_local_patches_dir)/series
-$(STAMPSDIR)/configure-gcc:
+configure-gcc-stamp:
dh_testdir
- mkdir -p $(BUILDDIR)/gcc $(STAMPSDIR)
+ mkdir -p $(BUILDDIR)/gcc
@echo
@echo ------------------------------------------------------------
@echo Configuring with gcc backend
@@ -234,7 +230,7 @@ $(STAMPSDIR)/configure-gcc:
with_check="skipped for GHDL build"
touch $@
-$(STAMPSDIR)/build-gcc: $(STAMPSDIR)/configure-gcc
+build-gcc-stamp: configure-gcc-stamp
dh_testdir
@echo
@echo ------------------------------------------------------------
@@ -249,7 +245,7 @@ $(STAMPSDIR)/build-gcc: $(STAMPSDIR)/configure-gcc
GHDL1_GCC_BIN="--GHDL1=$(BUILDDIR)/gcc/build/gcc/ghdl1"
touch $@
-$(STAMPSDIR)/install-gcc: $(STAMPSDIR)/build-gcc
+install-gcc: build-gcc-stamp
dh_testdir
@echo
@echo ------------------------------------------------------------
@@ -263,7 +259,7 @@ $(STAMPSDIR)/install-gcc: $(STAMPSDIR)/build-gcc
$(MAKE) -C $(BUILDDIR)/gcc/build install DESTDIR=$(CURDIR)/debian/tmp
$(MAKE) -C $(BUILDDIR)/gcc install DESTDIR=$(CURDIR)/debian/tmp
-$(STAMPSDIR)/test-gcc: $(STAMPSDIR)/build-gcc
+test-gcc-stamp: build-gcc-stamp
dh_testdir
@echo
@echo ------------------------------------------------------------
@@ -288,23 +284,3 @@ $(STAMPSDIR)/test-gcc: $(STAMPSDIR)/build-gcc
ln -sf ghdl/gcc/lib/gcc $(TESTRUNDIR)/gcc/usr/lib/gcc
debian/tests/ghdl-tests buildtest gcc
touch $@
-
-
-# convenience targets for development
-configure-mcode: $(STAMPSDIR)/configure-mcode
-build-mcode: $(STAMPSDIR)/build-mcode
-install-mcode: $(STAMPSDIR)/install-mcode
-test-mcode: $(STAMPSDIR)/test-mcode
-.PHONY: configure-mcode build-mcode install-mcode test-mcode
-
-configure-llvm: $(STAMPSDIR)/configure-llvm
-build-llvm: $(STAMPSDIR)/build-llvm
-install-llvm: $(STAMPSDIR)/install-llvm
-test-llvm: $(STAMPSDIR)/test-llvm
-.PHONY: configure-llvm build-llvm install-llvm test-llvm
-
-configure-gcc: $(STAMPSDIR)/configure-gcc
-build-gcc: $(STAMPSDIR)/build-gcc
-install-gcc: $(STAMPSDIR)/install-gcc
-test-gcc: $(STAMPSDIR)/test-gcc
-.PHONY: configure-gcc build-gcc install-gcc test-gcc
--
2.39.2
>From 17346f46e9c18a596de69df7d547d38dd98633fe Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Mon, 2 Oct 2023 16:26:05 +0200
Subject: [PATCH 10/14] Slightly simplify the backend selection with build
profiles
---
debian/rules | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/debian/rules b/debian/rules
index 9ce5a768..d15f38c8 100755
--- a/debian/rules
+++ b/debian/rules
@@ -19,24 +19,14 @@ export GHDL_VER_DESC := $(DEB_VENDOR) $(DEB_VERSION)
# are already parallelized by code included from debian_packaging-*.mk above).
MAKEPARALLEL = $(DEB_BUILD_OPTION_PARALLEL:%=-j%)
-# List of the ghdl backends to build
-BACKENDS := mcode llvm gcc
+# Mcode is only supported on x86 architectures.
+all_backends := gcc llvm $(and $(filter amd64 i386,$(DEB_HOST_ARCH_CPU)),mcode)
# build profile control over what backends get built
-ifneq ($(filter pkg.ghdl.nomcode,$(DEB_BUILD_PROFILES)),)
- BACKENDS := $(filter-out mcode,$(BACKENDS))
-endif
-ifneq ($(filter pkg.ghdl.nollvm,$(DEB_BUILD_PROFILES)),)
- BACKENDS := $(filter-out llvm,$(BACKENDS))
-endif
-ifneq ($(filter pkg.ghdl.nogcc,$(DEB_BUILD_PROFILES)),)
- BACKENDS := $(filter-out gcc,$(BACKENDS))
-endif
+pkg.ghdl.no_profiles := $(filter pkg.ghdl.no%,$(DEB_BUILD_PROFILES))
-# force disable mcode build on non-x86 architectures where it isn't supported
-ifeq ($(filter amd64 i386,$(DEB_HOST_ARCH_CPU)),)
- BACKENDS := $(filter-out mcode,$(BACKENDS))
-endif
+# Built backends.
+BACKENDS := $(filter-out $(pkg.ghdl.no_profiles:pkg.ghdl.no%=%),$(all_backends))
BUILDDIR := $(CURDIR)/builddir
TESTRUNDIR := $(CURDIR)/testrundir
--
2.39.2
>From a7c56398e5cc8146373d8d9aaa09596dbbedead8 Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Thu, 5 Oct 2023 16:30:47 +0200
Subject: [PATCH 11/14] Merge recipes for llvm and mcode, inhibit llvm tests in
test script
---
debian/rules | 83 +++++++++--------------------------------
debian/tests/ghdl-tests | 15 +++++++-
2 files changed, 31 insertions(+), 67 deletions(-)
diff --git a/debian/rules b/debian/rules
index d15f38c8..37bae8cb 100755
--- a/debian/rules
+++ b/debian/rules
@@ -88,100 +88,51 @@ override_dh_strip:
dh_strip -N libghdl-3-0-0
dh_strip -p libghdl-3-0-0 --dbgsym-migration='libghdl-2-0-0'
-configure-mcode-stamp:
+configure-llvm-stamp configure-mcode-stamp: configure-%-stamp:
dh_testdir
- mkdir -p $(BUILDDIR)/mcode
+ mkdir -p $(BUILDDIR)/$*
@echo
@echo ------------------------------------------------------------
- @echo Configuring with mcode backend
+ @echo Configuring with $* backend
@echo ------------------------------------------------------------
- cd $(BUILDDIR)/mcode && \
+ cd $(BUILDDIR)/$* && \
../../configure --srcdir=../.. $(common_configure_arguments) \
- --libdir=lib/ghdl/mcode \
- --libghdldir=lib/ghdl/mcode/vhdl
+ --libdir=lib/ghdl/$* \
+ --libghdldir=lib/ghdl/$*/vhdl
touch $@
+configure-llvm-stamp: common_configure_arguments += --with-llvm-config
-build-mcode-stamp: configure-mcode-stamp
+build-llvm-stamp build-mcode-stamp: build-%-stamp: configure-%-stamp
dh_testdir
@echo
@echo ------------------------------------------------------------
- @echo Building with mcode backend
+ @echo Building with $* backend
@echo ------------------------------------------------------------
- $(MAKE) -C $(BUILDDIR)/mcode
+ $(MAKE) -C $(BUILDDIR)/$*
touch $@
-install-mcode: build-mcode-stamp
+install-llvm install-mcode: install-%: build-%-stamp
dh_testdir
@echo
@echo ------------------------------------------------------------
- @echo Installing with mcode backend
+ @echo Installing with $* backend
@echo ------------------------------------------------------------
- $(MAKE) -C $(BUILDDIR)/mcode install DESTDIR=../../debian/tmp
+ $(MAKE) -C $(BUILDDIR)/$* install DESTDIR=../../debian/tmp
-test-mcode-stamp: build-mcode-stamp
+test-llvm-stamp test-mcode-stamp: test-%-stamp: build-%-stamp
dh_testdir
@echo
@echo ------------------------------------------------------------
- @echo Run testsuite for mcode backend
+ @echo Run testsuite for $* backend
@echo ------------------------------------------------------------
# With some paths patched for the Debian packaging, the tests will not
# work right when run from the build directory. To keep it simple
# install into a temporary location and tell the testsuite to find ghdl
# there.
- $(MAKE) -C $(BUILDDIR)/mcode install DESTDIR=$(TESTRUNDIR)/mcode
- debian/tests/ghdl-tests buildtest mcode
+ $(MAKE) -C $(BUILDDIR)/$* install DESTDIR=$(TESTRUNDIR)/$*
+ debian/tests/ghdl-tests buildtest $*
touch $@
-
-configure-llvm-stamp:
- dh_testdir
- mkdir -p $(BUILDDIR)/llvm
- @echo
- @echo ------------------------------------------------------------
- @echo Configuring with llvm backend
- @echo ------------------------------------------------------------
- cd $(BUILDDIR)/llvm && \
- ../../configure --srcdir=../.. $(common_configure_arguments) \
- --libdir=lib/ghdl/llvm \
- --libghdldir=lib/ghdl/llvm/vhdl \
- --with-llvm-config
- touch $@
-
-build-llvm-stamp: configure-llvm-stamp
- dh_testdir
- @echo
- @echo ------------------------------------------------------------
- @echo Building with llvm backend
- @echo ------------------------------------------------------------
- $(MAKE) -C $(BUILDDIR)/llvm
- touch $@
-
-install-llvm: build-llvm-stamp
- dh_testdir
- @echo
- @echo ------------------------------------------------------------
- @echo Installing with llvm backend
- @echo ------------------------------------------------------------
- $(MAKE) -C $(BUILDDIR)/llvm install DESTDIR=../../debian/tmp
-
-test-llvm-stamp: build-llvm-stamp
- dh_testdir
- @echo
- @echo ------------------------------------------------------------
- @echo Run testsuite for llvm backend
- @echo ------------------------------------------------------------
- # With some paths patched for the Debian packaging, the tests will not
- # work right when run from the build directory. To keep it simple
- # install into a temporary location and tell the testsuite to find ghdl
- # there.
- $(MAKE) -C $(BUILDDIR)/llvm install DESTDIR=$(TESTRUNDIR)/llvm
- # Temporarily make LLVM backend testsuite failure non-fatal to more
- # easily collect data for investigating the PSL testsuite failures on
- # some architectures
- -debian/tests/ghdl-tests buildtest llvm
- touch $@
-
-
gcc_local_patches_dir := debian/gcc-patches/gcc-$(DEB_GNAT_VERSION)
# Ignore comment lines, extensions like .diff and options like -p0.
gcc_local_patches != sed '/^\#/d; s/\..*//' $(gcc_local_patches_dir)/series
diff --git a/debian/tests/ghdl-tests b/debian/tests/ghdl-tests
index df1881f6..5868e16c 100755
--- a/debian/tests/ghdl-tests
+++ b/debian/tests/ghdl-tests
@@ -43,4 +43,17 @@ mkdir -p "$RUNDIR/src"
cp -r src/grt "$RUNDIR/src"
export GHDL
-(cd "$RUNDIR/testsuite"; ./testsuite.sh $TESTS -- --keep-going)
+
+cd "$RUNDIR/testsuite"
+
+# Temporarily make LLVM backend testsuite failure non-fatal to more
+# easily collect data for investigating the PSL testsuite failures on
+# some architectures
+if ./testsuite.sh $TESTS -- --keep-going; then
+ echo "Tests for backend $BACKEND passed."
+elif test $BACKEND = llvm; then
+ echo "Tests for backend llvm failed (but ignored for now)."
+else
+ echo >&2 "Tests for backend $BACKEND failed."
+ exit 1
+fi
--
2.39.2
>From caf2fa626289a1850da5d0c46431b009f30c793c Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Thu, 5 Oct 2023 14:39:35 +0200
Subject: [PATCH 12/14] Various minor improvements in the test driver
Enable more alerts by the shell.
Check the argument count.
Replace test cascades with 'case' constructs.
There is no need to create RUNDIR because the script is called after a
'make install'.
There is no need to check that the RUNDIR variable is not empty, it is
set in all branches of the previous construct.
---
debian/tests/ghdl-tests | 34 +++++++++++++++-------------------
1 file changed, 15 insertions(+), 19 deletions(-)
diff --git a/debian/tests/ghdl-tests b/debian/tests/ghdl-tests
index 5868e16c..871d594b 100755
--- a/debian/tests/ghdl-tests
+++ b/debian/tests/ghdl-tests
@@ -1,39 +1,35 @@
#!/bin/sh
-set -e
+set -C -e -f -u
# The pyunit tests are not run here. These parts are not activated in
# Debian yet.
TESTS="sanity gna vests synth vpi vhpi"
+test $# = 2
-if [ "$2" = mcode ]; then
- BACKEND=mcode
-elif [ "$2" = llvm ]; then
- BACKEND=llvm
-elif [ "$2" = gcc ]; then
- BACKEND=gcc
-else
+case "$2" in
+ gcc|llvm|mcode)
+ BACKEND=$2
+ ;;
+ *)
echo >&2 "Invalid backend specification"
exit 1
-fi
+esac
-if [ "$1" = buildtest ]; then
+case "$1" in
+ buildtest)
RUNDIR=testrundir/$BACKEND
- mkdir -p "$RUNDIR"
GHDL="$PWD/$RUNDIR/usr/bin/ghdl-$BACKEND"
-elif [ "$1" = autopkgtest ]; then
+ ;;
+ autopkgtest)
RUNDIR="$AUTOPKGTEST_TMP"
GHDL=/usr/bin/ghdl-$BACKEND
-else
+ ;;
+ *)
echo >&2 "Invalid test environment specification"
exit 1
-fi
-
-if [ -z "$RUNDIR" ]; then
- echo >&2 "RUNDIR is empty string"
- exit 1
-fi
+esac
# Copy testsuite into $RUNDIR to execute there, so that no cleanup is necessary
# (entire $RUNDIR will be deleted later). Also copy src/grt as at least one test
--
2.39.2
>From 31e272f2d1882e2b6df7498b4063667166f59767 Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Thu, 5 Oct 2023 17:47:14 +0200
Subject: [PATCH 13/14] Share the debian/rules snippet announcing the current
Make target
---
debian/rules | 55 ++++++++++++++--------------------------------------
1 file changed, 15 insertions(+), 40 deletions(-)
diff --git a/debian/rules b/debian/rules
index 37bae8cb..138b8581 100755
--- a/debian/rules
+++ b/debian/rules
@@ -50,6 +50,13 @@ common_configure_arguments := \
--enable-gplcompat \
# EOL
+define announce
+ dh_testdir
+ @echo
+ @echo '------------------------------------------------------------'
+ @echo 'About to run Make target: $@'
+ @echo '------------------------------------------------------------'
+endef
%:
ifneq (,$(findstring $(shell dpkg-architecture -qDEB_HOST_ARCH), s390x))
@@ -89,12 +96,8 @@ override_dh_strip:
dh_strip -p libghdl-3-0-0 --dbgsym-migration='libghdl-2-0-0'
configure-llvm-stamp configure-mcode-stamp: configure-%-stamp:
- dh_testdir
+ $(announce)
mkdir -p $(BUILDDIR)/$*
- @echo
- @echo ------------------------------------------------------------
- @echo Configuring with $* backend
- @echo ------------------------------------------------------------
cd $(BUILDDIR)/$* && \
../../configure --srcdir=../.. $(common_configure_arguments) \
--libdir=lib/ghdl/$* \
@@ -103,28 +106,16 @@ configure-llvm-stamp configure-mcode-stamp: configure-%-stamp:
configure-llvm-stamp: common_configure_arguments += --with-llvm-config
build-llvm-stamp build-mcode-stamp: build-%-stamp: configure-%-stamp
- dh_testdir
- @echo
- @echo ------------------------------------------------------------
- @echo Building with $* backend
- @echo ------------------------------------------------------------
+ $(announce)
$(MAKE) -C $(BUILDDIR)/$*
touch $@
install-llvm install-mcode: install-%: build-%-stamp
- dh_testdir
- @echo
- @echo ------------------------------------------------------------
- @echo Installing with $* backend
- @echo ------------------------------------------------------------
+ $(announce)
$(MAKE) -C $(BUILDDIR)/$* install DESTDIR=../../debian/tmp
test-llvm-stamp test-mcode-stamp: test-%-stamp: build-%-stamp
- dh_testdir
- @echo
- @echo ------------------------------------------------------------
- @echo Run testsuite for $* backend
- @echo ------------------------------------------------------------
+ $(announce)
# With some paths patched for the Debian packaging, the tests will not
# work right when run from the build directory. To keep it simple
# install into a temporary location and tell the testsuite to find ghdl
@@ -138,12 +129,8 @@ gcc_local_patches_dir := debian/gcc-patches/gcc-$(DEB_GNAT_VERSION)
gcc_local_patches != sed '/^\#/d; s/\..*//' $(gcc_local_patches_dir)/series
configure-gcc-stamp:
- dh_testdir
+ $(announce)
mkdir -p $(BUILDDIR)/gcc
- @echo
- @echo ------------------------------------------------------------
- @echo Configuring with gcc backend
- @echo ------------------------------------------------------------
# gcc unpack sequence cribbed from gcc-7-cross debian/rules
# We have to disable the gcc-verbose-lto-link patch since it replaces
# the LLINKER value with one that runs the linker under /usr/bin/time
@@ -172,11 +159,7 @@ configure-gcc-stamp:
touch $@
build-gcc-stamp: configure-gcc-stamp
- dh_testdir
- @echo
- @echo ------------------------------------------------------------
- @echo Building with gcc backend
- @echo ------------------------------------------------------------
+ $(announce)
$(MAKE) $(MAKEPARALLEL) -C $(BUILDDIR)/gcc/build
# For some reason, on the i386 architecture only, it decides to delete
# one important build result. Just rerun make as a workaround.
@@ -187,11 +170,7 @@ build-gcc-stamp: configure-gcc-stamp
touch $@
install-gcc: build-gcc-stamp
- dh_testdir
- @echo
- @echo ------------------------------------------------------------
- @echo Installing with gcc backend
- @echo ------------------------------------------------------------
+ $(announce)
# Place a symlink for the binary ahead of time so that the compilation
# of the VHDL standard libraries works during the gcc install step. The
# binary is properly moved afterwards.
@@ -201,11 +180,7 @@ install-gcc: build-gcc-stamp
$(MAKE) -C $(BUILDDIR)/gcc install DESTDIR=$(CURDIR)/debian/tmp
test-gcc-stamp: build-gcc-stamp
- dh_testdir
- @echo
- @echo ------------------------------------------------------------
- @echo Run testsuite for gcc backend
- @echo ------------------------------------------------------------
+ $(announce)
# With some paths patched for the Debian packaging, the tests will not
# work right when run from the build directory. To keep it simple
# install into a temporary location and tell the testsuite to find ghdl
--
2.39.2
>From 0eea34de882cffc9b34e7fa81362fbb1c6e79dc6 Mon Sep 17 00:00:00 2001
From: Nicolas Boulenguez <[email protected]>
Date: Wed, 11 Oct 2023 08:36:22 +0200
Subject: [PATCH 14/14] debian/control: remove unused shlibs:Depends
substitution variable
---
debian/control | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/debian/control b/debian/control
index a354cf0d..545c44b4 100644
--- a/debian/control
+++ b/debian/control
@@ -55,7 +55,7 @@ Description: VHDL compiler/simulator
Package: ghdl-common
Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}
+Depends: ${misc:Depends}
Breaks: ghdl (<< 0.37+dfsg2)
Replaces: ghdl (<< 0.37+dfsg2)
Description: VHDL compiler/simulator (common files)
--
2.39.2