Je pense que le concept de "pinned svn:externals", c'est-à-dire de
svn:externals avec une révision explicite, est de toute première
importance, pas suffisamment mise en valeur par les gens de
Subversion. En fait, sauf cas exceptionnel, un svn:externals "ouvert"
ne devrait jamais être légitime.
Dans ces conditions se pose la question des check-ins de répertoire
hôte quand il y a des modifications dans des externals. Dans tous les
cas, je crois que vcs devrait faire le checkin des svn:externals
d'abord, qu'ils soient pinned ou non, mais que dans le cas pinned,
alors vcs devrait ensuite mettre à jour la référence de l'external
avant de poursuivre sur le checkin de l'hôte.
Suis-je clair ?
Dans le cas de share/ par exemple, on a :
share-ci:
cd $(share_dir) && vcs-svn ci
$(MAKE) share-up
je pense que "make share-ci" ne devrait pas être nécessaire avec vcs :
c'est lui qui devrait faire des checkins récursifs dans les externals.
% vcs --version
Vcs version: 0.5.0 beta1 (with optional XmasTree colors)
VCS semble toujours vouloir donner en ligne d'argument les fichiers
qui sont présents. C'est une mauvaise idée pour les diffs dans le
passé, puisque par exemple :
% vcs-svn diffw -r 1592
échoue avec :
svn: Unable to find repository location for 'Makefile' in revision 1592
vcs: error: command: svn diff --diff-cmd diff --revision 1592 --extensions -NPbuw -- CRF.java Makefile
vcs: error: exit: 1
et donc sans me donner le résultat, alors que svn diff -r 1592 marche
parfaitement (mais bien entendu, svn diff -r 1592 Makefile échoue).
Il est intéressant de noter que même si je "cd .. && vcs-svn diffw
mon-répertoire", j'ai exactement le même problème.
https://svn.lrde.epita.fr/svn/lrde-tools/trunk/build-farm
Index: ChangeLog
from Roland Levillain <roland(a)lrde.epita.fr>
Factor PATH population.
* buildfarm_worker/build_test.fns (host_type): New variable.
(path_prepend): New function.
* buildfarm_worker/antalya.fns, buildfarm_worker/caracas.fns,
* buildfarm_worker/marvejols.fns, buildfarm_worker/istanbul.fns,
* buildfarm_worker/tanis.fns: Use it to alter PATH.
antalya.fns | 9 ++++-----
build_test.fns | 27 +++++++++++++++++++++++++++
caracas.fns | 8 ++++----
istanbul.fns | 7 ++++---
marvejols.fns | 8 ++++----
tanis.fns | 7 ++++---
6 files changed, 47 insertions(+), 19 deletions(-)
Index: buildfarm_worker/caracas.fns
--- buildfarm_worker/caracas.fns (revision 394)
+++ buildfarm_worker/caracas.fns (working copy)
@@ -1,10 +1,10 @@
# caracas. -*- shell-script -*-
-
# Used to continuously build Tiger and Vaucanson.
-# Add some programs from /lrde/bin to the PATH.
-export PATH="/lrde/dev/linux-x86/sarge/autoconf-2.60/bin:$PATH"
-export PATH="/lrde/dev/linux-x86/sarge/bison-2.3/bin:$PATH"
+host_type=linux-x86/sarge
+
+# Add some programs from /lrde/dev to the PATH.
+path_prepend autoconf-2.60 bison-2.3
# The ccache dir is located in the /work file system. As ~/.zshenv is
# not sourced by the build script, this environment variable is
Index: buildfarm_worker/build_test.fns
--- buildfarm_worker/build_test.fns (revision 394)
+++ buildfarm_worker/build_test.fns (working copy)
@@ -10,6 +10,33 @@
# default maximum runtime for any command, about 6H
MAXTIME=21600
+# Host type. Empty by default.
+# FIXME: This value should be guessed, using system.fns for example.
+host_type=
+
+
+# PATH_PREPEND PACKAGE1 ...
+# -------------------------
+# Add one package or more to the PATH. The added directory is derived
+# from the package name, and has the form
+#
+# /lrde/dev/$host_type/$package/bin
+#
+# where $host_type is a variable set from the host configuration file
+# (e.g., antalya.fns).
+
+path_prepend() {
+ if test -z "$host_type"; then
+ echo "\$host_type no set."
+ exit 1
+ fi
+
+ for package; do
+ export PATH="/lrde/dev/$host_type/$package/bin:$PATH"
+ done
+}
+
+
#############################
# build a signature of a tree, used to see if we
# need to rebuild
Index: buildfarm_worker/marvejols.fns
--- buildfarm_worker/marvejols.fns (revision 394)
+++ buildfarm_worker/marvejols.fns (working copy)
@@ -1,11 +1,11 @@
# marvejols. -*- shell-script -*-
+host_type=linux-x86/sarge
+
# Nix settings.
. /nix/etc/profile.d/nix.sh
-
-# Add some programs from /lrde/bin to the PATH.
-export PATH="/lrde/dev/linux-x86/sarge/autoconf-2.60/bin:$PATH"
-export PATH="/lrde/dev/linux-x86/sarge/bison-2.3/bin:$PATH"
+# Add some programs from /lrde/dev to the PATH.
+path_prepend autoconf-2.60 bison-2.3
# The ccache dir is located in the /work file system on. As
# ~/.zshenv is not sourced by the build script, this environment
Index: buildfarm_worker/tanis.fns
--- buildfarm_worker/tanis.fns (revision 394)
+++ buildfarm_worker/tanis.fns (working copy)
@@ -1,9 +1,10 @@
# tanis. -*- shell-script -*-
-
# Used to build Vaucanson.
-# Add some programs from /lrde/bin to the PATH.
-export PATH="/lrde/dev/linux-x86/sarge/bison-2.3/bin:$PATH"
+host_type=linux-x86/sarge
+
+# Add some programs from /lrde/dev to the PATH.
+path_prepend bison-2.3
# The ccache dir is located in the /work file system. As ~/.zshenv is
# not sourced by the build script, this environment variable is
Index: buildfarm_worker/istanbul.fns
--- buildfarm_worker/istanbul.fns (revision 394)
+++ buildfarm_worker/istanbul.fns (working copy)
@@ -1,8 +1,9 @@
# istanbul. -*- shell-script -*-
-# Add some programs from /lrde/bin to the PATH.
-export PATH="/lrde/dev/linux-sparc64/sarge/autoconf-2.60/bin:$PATH"
-export PATH="/lrde/dev/linux-sparc64/sarge/bison-2.3/bin:$PATH"
+host_type=linux-sparc64
+
+# Add some programs from /lrde/dev to the PATH.
+path_prepend autoconf-2.60 bison-2.3
export CCACHE_DIR="/work/build/var/ccache"
Index: buildfarm_worker/antalya.fns
--- buildfarm_worker/antalya.fns (revision 394)
+++ buildfarm_worker/antalya.fns (working copy)
@@ -1,15 +1,14 @@
# antalya. -*- shell-script -*-
+host_type=darwin-powerpc/panther
+
# Nix settings.
. /nix/etc/profile.d/nix.sh
# Fink and local binaries.
export PATH="/work/build/bin:/sw/bin:$PATH"
-# Add some programs from /lrde/bin to the PATH.
-export PATH="/lrde/dev/darwin-powerpc/panther/autoconf-2.60/bin:$PATH"
-export PATH="/lrde/dev/darwin-powerpc/panther/automake-1.9.6/bin:$PATH"
-export PATH="/lrde/dev/darwin-powerpc/panther/bison-2.3/bin:$PATH"
-export PATH="/lrde/dev/darwin-powerpc/panther/swig-1.3.29/bin:$PATH"
+# Add some programs from /lrde/dev to the PATH.
+path_prepend autoconf-2.60 automake-1.9.6 bison-2.3 swig-1.3.29
# Set up Libtool (from Fink).
export ACLOCAL="aclocal -I /sw/share/aclocal"
>>> "Roland" == Roland Levillain <roland(a)lrde.epita.fr> writes:
> Index: buildfarm_worker/caracas.fns
> --- buildfarm_worker/caracas.fns (revision 393)
> +++ buildfarm_worker/caracas.fns (working copy)
> @@ -4,7 +4,7 @@
> # Add some programs from /lrde/bin to the PATH.
> export PATH="/lrde/dev/linux-x86/sarge/autoconf-2.60/bin:$PATH"
> -export PATH="/lrde/dev/linux-x86/sarge/bison-2.2/bin:$PATH"
> +export PATH="/lrde/dev/linux-x86/sarge/bison-2.3/bin:$PATH"
Why don't you have a function, say path_prepend, that does this, using
a local variable, say $host_type, that does depend on the machine.
That would certainly factor a lot of stuff here.
path_prepend autoconf-2.60 \
bison-2.3 \
...
> # The ccache dir is located in the /work file system. As ~/.zshenv is
> # not sourced by the build script, this environment variable is
> Index: buildfarm_worker/marvejols.fns
> --- buildfarm_worker/marvejols.fns (revision 393)
> +++ buildfarm_worker/marvejols.fns (working copy)
> @@ -5,7 +5,7 @@
> # Add some programs from /lrde/bin to the PATH.
> export PATH="/lrde/dev/linux-x86/sarge/autoconf-2.60/bin:$PATH"
> -export PATH="/lrde/dev/linux-x86/sarge/bison-2.2/bin:$PATH"
> +export PATH="/lrde/dev/linux-x86/sarge/bison-2.3/bin:$PATH"
> # The ccache dir is located in the /work file system on. As
> # ~/.zshenv is not sourced by the build script, this environment
> Index: buildfarm_worker/tanis.fns
> --- buildfarm_worker/tanis.fns (revision 393)
> +++ buildfarm_worker/tanis.fns (working copy)
> @@ -3,7 +3,7 @@
> # Used to build Vaucanson.
> # Add some programs from /lrde/bin to the PATH.
> -export PATH="/lrde/dev/linux-x86/sarge/bison-2.2/bin:$PATH"
> +export PATH="/lrde/dev/linux-x86/sarge/bison-2.3/bin:$PATH"
> # The ccache dir is located in the /work file system. As ~/.zshenv is
> # not sourced by the build script, this environment variable is
> Index: buildfarm_worker/istanbul.fns
> --- buildfarm_worker/istanbul.fns (revision 393)
> +++ buildfarm_worker/istanbul.fns (working copy)
> @@ -2,7 +2,7 @@
> # Add some programs from /lrde/bin to the PATH.
> export PATH="/lrde/dev/linux-sparc64/sarge/autoconf-2.60/bin:$PATH"
> -export PATH="/lrde/dev/linux-sparc64/sarge/bison-2.2/bin:$PATH"
> +export PATH="/lrde/dev/linux-sparc64/sarge/bison-2.3/bin:$PATH"
> export CCACHE_DIR="/work/build/var/ccache"
> Index: buildfarm_worker/antalya.fns
> --- buildfarm_worker/antalya.fns (revision 393)
> +++ buildfarm_worker/antalya.fns (working copy)
> @@ -8,7 +8,7 @@
> # Add some programs from /lrde/bin to the PATH.
> export PATH="/lrde/dev/darwin-powerpc/panther/autoconf-2.60/bin:$PATH"
> export PATH="/lrde/dev/darwin-powerpc/panther/automake-1.9.6/bin:$PATH"
> -export PATH="/lrde/dev/darwin-powerpc/panther/bison-2.2/bin:$PATH"
> +export PATH="/lrde/dev/darwin-powerpc/panther/bison-2.3/bin:$PATH"
> export PATH="/lrde/dev/darwin-powerpc/panther/swig-1.3.29/bin:$PATH"
> # Set up Libtool (from Fink).
https://svn.lrde.epita.fr/svn/lrde-tools/trunk/build-farm
Index: ChangeLog
from Roland Levillain <roland(a)lrde.epita.fr>
Use Bison 2.3.
* buildfarm_worker/antalya.fns, buildfarm_worker/caracas.fns,
* buildfarm_worker/istanbul.fns, buildfarm_worker/marvejols.fns,
* buildfarm_worker/tanis.fns (PATH): Add Bison 2.3's bin directory
to the path.
antalya.fns | 2 +-
caracas.fns | 2 +-
istanbul.fns | 2 +-
marvejols.fns | 2 +-
tanis.fns | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
Index: buildfarm_worker/caracas.fns
--- buildfarm_worker/caracas.fns (revision 393)
+++ buildfarm_worker/caracas.fns (working copy)
@@ -4,7 +4,7 @@
# Add some programs from /lrde/bin to the PATH.
export PATH="/lrde/dev/linux-x86/sarge/autoconf-2.60/bin:$PATH"
-export PATH="/lrde/dev/linux-x86/sarge/bison-2.2/bin:$PATH"
+export PATH="/lrde/dev/linux-x86/sarge/bison-2.3/bin:$PATH"
# The ccache dir is located in the /work file system. As ~/.zshenv is
# not sourced by the build script, this environment variable is
Index: buildfarm_worker/marvejols.fns
--- buildfarm_worker/marvejols.fns (revision 393)
+++ buildfarm_worker/marvejols.fns (working copy)
@@ -5,7 +5,7 @@
# Add some programs from /lrde/bin to the PATH.
export PATH="/lrde/dev/linux-x86/sarge/autoconf-2.60/bin:$PATH"
-export PATH="/lrde/dev/linux-x86/sarge/bison-2.2/bin:$PATH"
+export PATH="/lrde/dev/linux-x86/sarge/bison-2.3/bin:$PATH"
# The ccache dir is located in the /work file system on. As
# ~/.zshenv is not sourced by the build script, this environment
Index: buildfarm_worker/tanis.fns
--- buildfarm_worker/tanis.fns (revision 393)
+++ buildfarm_worker/tanis.fns (working copy)
@@ -3,7 +3,7 @@
# Used to build Vaucanson.
# Add some programs from /lrde/bin to the PATH.
-export PATH="/lrde/dev/linux-x86/sarge/bison-2.2/bin:$PATH"
+export PATH="/lrde/dev/linux-x86/sarge/bison-2.3/bin:$PATH"
# The ccache dir is located in the /work file system. As ~/.zshenv is
# not sourced by the build script, this environment variable is
Index: buildfarm_worker/istanbul.fns
--- buildfarm_worker/istanbul.fns (revision 393)
+++ buildfarm_worker/istanbul.fns (working copy)
@@ -2,7 +2,7 @@
# Add some programs from /lrde/bin to the PATH.
export PATH="/lrde/dev/linux-sparc64/sarge/autoconf-2.60/bin:$PATH"
-export PATH="/lrde/dev/linux-sparc64/sarge/bison-2.2/bin:$PATH"
+export PATH="/lrde/dev/linux-sparc64/sarge/bison-2.3/bin:$PATH"
export CCACHE_DIR="/work/build/var/ccache"
Index: buildfarm_worker/antalya.fns
--- buildfarm_worker/antalya.fns (revision 393)
+++ buildfarm_worker/antalya.fns (working copy)
@@ -8,7 +8,7 @@
# Add some programs from /lrde/bin to the PATH.
export PATH="/lrde/dev/darwin-powerpc/panther/autoconf-2.60/bin:$PATH"
export PATH="/lrde/dev/darwin-powerpc/panther/automake-1.9.6/bin:$PATH"
-export PATH="/lrde/dev/darwin-powerpc/panther/bison-2.2/bin:$PATH"
+export PATH="/lrde/dev/darwin-powerpc/panther/bison-2.3/bin:$PATH"
export PATH="/lrde/dev/darwin-powerpc/panther/swig-1.3.29/bin:$PATH"
# Set up Libtool (from Fink).
https://svn.lrde.epita.fr/svn/lrde-tools/trunk/build-farm
Index: ChangeLog
from Roland Levillain <roland(a)lrde.epita.fr>
Adjust paths for the build farm directory on antalya.
* buildfarm_worker/antalya.fns (PATH, CCACHE_DIR): s,/var/tmp,/work,.
antalya.fns | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
Index: buildfarm_worker/antalya.fns
--- buildfarm_worker/antalya.fns (revision 390)
+++ buildfarm_worker/antalya.fns (working copy)
@@ -4,7 +4,7 @@
. /nix/etc/profile.d/nix.sh
# Fink and local binaries.
-export PATH="/var/tmp/build/bin:/sw/bin:$PATH"
+export PATH="/work/build/bin:/sw/bin:$PATH"
# Add some programs from /lrde/bin to the PATH.
export PATH="/lrde/dev/darwin-powerpc/panther/autoconf-2.60/bin:$PATH"
export PATH="/lrde/dev/darwin-powerpc/panther/automake-1.9.6/bin:$PATH"
@@ -19,7 +19,7 @@
# The ccache dir is located in the /var/ file system. As ~/.zshenv is
# not sourced by the build script, this environment variable is
# defined here.
-export CCACHE_DIR="/var/tmp/build/var/ccache"
+export CCACHE_DIR="/work/build/var/ccache"
# Clean up.