diff --git a/.gitignore b/.gitignore
index 2759bc874c7161b644d1f9cc18426de900653b1d..06c5eba656d7d4881294837ff3bec1fd9d663312 100644
--- a/.gitignore
+++ b/.gitignore
@@ -47,7 +47,6 @@
 
 # devel
 /devel/clean-cluster
-/devel/upload
 
 # doc
 /doc/api/
diff --git a/Makefile.am b/Makefile.am
index 04fb36164a1622c913822694d5208d603be0ce73..4dec77fb9060c52b23a628494c80b7b2d3d25a37 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -157,7 +157,6 @@ CLEANFILES = \
 	$(SHELL_ENV_INIT) \
 	daemons/daemon-util \
 	daemons/ganeti-cleaner \
-	devel/upload \
 	$(BUILT_EXAMPLES) \
 	doc/examples/bash_completion \
 	doc/examples/bash_completion-debug \
@@ -559,7 +558,6 @@ docpng = $(patsubst %.dot,%.png,$(docdot))
 # Things to build but not to install (add it to EXTRA_DIST if it should be
 # distributed)
 noinst_DATA = \
-	devel/upload \
 	doc/html \
 	$(BUILT_EXAMPLES) \
 	doc/examples/bash_completion \
@@ -732,7 +730,7 @@ EXTRA_DIST = \
 	daemons/daemon-util.in \
 	daemons/ganeti-cleaner.in \
 	$(pkglib_python_scripts) \
-	devel/upload.in \
+	devel/upload \
 	tools/kvm-ifup.in \
 	tools/vcluster-setup.in \
 	$(docdot) \
@@ -1070,10 +1068,6 @@ tools/kvm-ifup: tools/kvm-ifup.in $(REPLACE_VARS_SED)
 	sed -f $(REPLACE_VARS_SED) < $< > $@
 	chmod +x $@
 
-devel/upload: devel/upload.in $(REPLACE_VARS_SED)
-	sed -f $(REPLACE_VARS_SED) < $< > $@
-	chmod u+x $@
-
 tools/vcluster-setup: tools/vcluster-setup.in $(REPLACE_VARS_SED)
 	sed -f $(REPLACE_VARS_SED) < $< > $@
 	chmod +x $@
diff --git a/devel/upload.in b/devel/upload
old mode 100644
new mode 100755
similarity index 92%
rename from devel/upload.in
rename to devel/upload
index 2130a9eaa2b1d4990cf9344f983f8f19b5687896..5fe1c746245e4d3268dd3e12dadd467db03d6a58
--- a/devel/upload.in
+++ b/devel/upload
@@ -32,9 +32,7 @@ usage() {
   exit $1
 }
 
-PREFIX='@PREFIX@'
-SYSCONFDIR='@SYSCONFDIR@'
-PKGLIBDIR='@PKGLIBDIR@'
+declare -r SED="sed -f autotools/replace_vars.sed"
 
 NO_RESTART=
 NO_CRON=
@@ -90,6 +88,12 @@ umask 0022
 # install ganeti as a real tree
 make $make_args install DESTDIR="$TXD"
 
+# at this point, make has been finished, so the configuration is
+# fixed; we can read the prefix vars/etc.
+PREFIX="$(echo @PREFIX@ | $SED)"
+SYSCONFDIR="$(echo @SYSCONFDIR@ | $SED)"
+PKGLIBDIR="$(echo @PKGLIBDIR@ | $SED)"
+
 # copy additional needed files
 [ -f doc/examples/ganeti.initd ] && \
 install -D --mode=0755 doc/examples/ganeti.initd \