These patches let you create a directory and build in that directory, instead of building in place in the source tree. For example, you can do something like mkdir build && cd build && ../configure --enable-gtk-doc && make.
Bonus: the distcheck target works now.
This copies the rule for running intltool-merge on .desktop files from IT_PROG_INTLTOOL in intltool.m4. We're not using the macro itself because it expects us to run intltoolize on the source tree, and the intltool version of Makefile.in.in breaks some of the things gettext does. But at least this way the intltool-merge rule is in one place instead of two. Also added autoconf checks for the intltool programs. --- .gitignore | 1 + configure.ac | 25 +++++++++++++++++++++++++ data/liveinst/Makefile.am | 7 +------ data/liveinst/gnome/Makefile.am | 7 +------ 4 files changed, 28 insertions(+), 12 deletions(-)
diff --git a/.gitignore b/.gitignore index e888426..f609268 100644 --- a/.gitignore +++ b/.gitignore @@ -67,6 +67,7 @@ po/remove-potcdate.sed po/remove-potcdate.sin po/stamp-po po/tmp +po/.intltool-merge-cache py-compile stamp-h1 tags diff --git a/configure.ac b/configure.ac index f3e5752..624adad 100644 --- a/configure.ac +++ b/configure.ac @@ -38,6 +38,31 @@ AC_PROG_LN_S AC_PROG_MAKE_SET AC_PROG_LIBTOOL
+# Check for the intltool programs +# These checks and subsitutions are adapted IT_PROG_INTLTOOL provided in +# intltool.m4, but without the parts where it breaks gettext. +AC_PATH_PROG([INTLTOOL_EXTRACT], [intltool-extract]) +AC_PATH_PROG([INTLTOOL_MERGE], [intltool-merge]) +AS_IF([test -z "$INTLTOOL_EXTRACT" -o -z "$INTLTOOL_MERGE"], + [AC_MSG_ERROR([*** intltool not found])]) + +# Add the bits for Makefile rules +INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))' +INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))' +INTLTOOL__v_MERGE_0='@echo " ITMRG " $@;' +INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))' +intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))' +intltool__v_merge_options_0='-q' +AC_SUBST(INTLTOOL_V_MERGE) +AC_SUBST(INTLTOOL__v_MERGE_) +AC_SUBST(INTLTOOL__v_MERGE_0) +AC_SUBST(INTLTOOL_V_MERGE_OPTIONS) +AC_SUBST(intltool__v_merge_options_) +AC_SUBST(intltool__v_merge_options_0) + +INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@' +AC_SUBST(INTLTOOL_DESKTOP_RULE) + AM_GNU_GETTEXT([external]) AM_GNU_GETTEXT_VERSION([0.18.1])
diff --git a/data/liveinst/Makefile.am b/data/liveinst/Makefile.am index 0da8c6c..7274b3f 100644 --- a/data/liveinst/Makefile.am +++ b/data/liveinst/Makefile.am @@ -35,12 +35,7 @@ CLEANFILES = liveinst.desktop *.h
MAINTAINERCLEANFILES = Makefile.in
-intltool_merge_verbose = $(intltool_merge_verbose_$(V)) -intltool_merge_verbose_ = $(intltool_merge_verbose_$(AM_DEFAULT_VERBOSITY)) -intltool_merge_verbose_0 = @echo " MERGE "$@; - -liveinst.desktop: liveinst.desktop.in - $(intltool_merge_verbose)LC_ALL=C intltool-merge -q -d -u $(top_srcdir)/po liveinst.desktop.in liveinst.desktop +@INTLTOOL_DESKTOP_RULE@
install-exec-local: mkdir -p $(DESTDIR)$(bindir) diff --git a/data/liveinst/gnome/Makefile.am b/data/liveinst/gnome/Makefile.am index 174a04f..706cd10 100644 --- a/data/liveinst/gnome/Makefile.am +++ b/data/liveinst/gnome/Makefile.am @@ -27,9 +27,4 @@ CLEANFILES = fedora-welcome.desktop
MAINTAINERCLEANFILES = Makefile.in
-intltool_merge_verbose = $(intltool_merge_verbose_$(V)) -intltool_merge_verbose_ = $(intltool_merge_verbose_$(AM_DEFAULT_VERBOSITY)) -intltool_merge_verbose_0 = @echo " MERGE "$@; - -fedora-welcome.desktop: fedora-welcome.desktop.in - $(intltool_merge_verbose)LC_ALL=C intltool-merge -q -d -u $(top_srcdir)/po fedora-welcome.desktop.in fedora-welcome.desktop +@INTLTOOL_DESKTOP_RULE@
Fun fact: Automake doesn't support wildcards. There's a snitty chapter about it in the manual and everything. However, in most cases we can trick it into working right by specifying a directory with the wildcard. --- data/command-stubs/Makefile.am | 2 +- data/pixmaps/Makefile.am | 2 +- pyanaconda/Makefile.am | 2 +- pyanaconda/installclasses/Makefile.am | 2 +- pyanaconda/isys/Makefile.am | 4 ++-- pyanaconda/packaging/Makefile.am | 2 +- pyanaconda/ui/Makefile.am | 2 +- pyanaconda/ui/gui/Makefile.am | 4 ++-- pyanaconda/ui/gui/categories/Makefile.am | 2 +- pyanaconda/ui/gui/hubs/Makefile.am | 4 ++-- pyanaconda/ui/gui/spokes/Makefile.am | 4 ++-- pyanaconda/ui/gui/spokes/advstorage/Makefile.am | 4 ++-- pyanaconda/ui/gui/spokes/lib/Makefile.am | 4 ++-- pyanaconda/ui/lib/Makefile.am | 2 +- pyanaconda/ui/tui/Makefile.am | 2 +- pyanaconda/ui/tui/hubs/Makefile.am | 2 +- pyanaconda/ui/tui/simpleline/Makefile.am | 2 +- pyanaconda/ui/tui/spokes/Makefile.am | 2 +- utils/log_picker/Makefile.am | 2 +- utils/log_picker/sending/Makefile.am | 2 +- widgets/data/tzmapdata/Makefile.am | 2 +- 21 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/data/command-stubs/Makefile.am b/data/command-stubs/Makefile.am index cab5f89..2ad8511 100644 --- a/data/command-stubs/Makefile.am +++ b/data/command-stubs/Makefile.am @@ -18,6 +18,6 @@ # Author: David Cantrell dcantrell@redhat.com
commandstubsdir = $(datadir)/$(PACKAGE_NAME) -dist_commandstubs_SCRIPTS = *-stub +dist_commandstubs_SCRIPTS = $(srcdir)/*-stub
MAINTAINERCLEANFILES = Makefile.in diff --git a/data/pixmaps/Makefile.am b/data/pixmaps/Makefile.am index 26d1f77..2b95c4d 100644 --- a/data/pixmaps/Makefile.am +++ b/data/pixmaps/Makefile.am @@ -18,6 +18,6 @@ # Author: David Cantrell dcantrell@redhat.com
pixmapsdir = $(datadir)/$(PACKAGE_NAME)/pixmaps -dist_pixmaps_DATA = *.png *.svg +dist_pixmaps_DATA = $(srcdir)/*.png $(srcdir)/*.svg
MAINTAINERCLEANFILES = Makefile.in diff --git a/pyanaconda/Makefile.am b/pyanaconda/Makefile.am index 09b2b86..ae1159c 100644 --- a/pyanaconda/Makefile.am +++ b/pyanaconda/Makefile.am @@ -24,4 +24,4 @@ MAINTAINERCLEANFILES = Makefile.in # anaconda Python code pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) anacondadir = $(pkgpyexecdir) -anaconda_PYTHON = *.py +anaconda_PYTHON = $(srcdir)/*.py diff --git a/pyanaconda/installclasses/Makefile.am b/pyanaconda/installclasses/Makefile.am index d7bd1eb..4b80b20 100644 --- a/pyanaconda/installclasses/Makefile.am +++ b/pyanaconda/installclasses/Makefile.am @@ -19,6 +19,6 @@
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) installclassesdir = $(pkgpyexecdir)/installclasses -installclasses_PYTHON = *.py +installclasses_PYTHON = $(srcdir)/*.py
MAINTAINERCLEANFILES = Makefile.in diff --git a/pyanaconda/isys/Makefile.am b/pyanaconda/isys/Makefile.am index 8cdae2d..9ed177e 100644 --- a/pyanaconda/isys/Makefile.am +++ b/pyanaconda/isys/Makefile.am @@ -23,7 +23,7 @@ ISYS_SRCS = devices.c lang.c \ isofs.c linkdetect.c vio.c ethtool.c eddsupport.c iface.c \ auditd.c log.c mem.c
-dist_noinst_HEADERS = *.h +dist_noinst_HEADERS = $(srcdir)/*.h
ISYS_CFLAGS = -DVERSION='"$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)"' \ $(NETWORKMANAGER_CFLAGS) $(LIBNL_CFLAGS) $(LIBNM_GLIB_CFLAGS) \ @@ -33,7 +33,7 @@ ISYS_LIBS = $(RESOLV_LIBS) $(ZLIB_LIBS) \ $(LIBNL_LIBS) $(LIBNM_GLIB_LIBS)
isysdir = $(pkgpyexecdir)/isys -isys_PYTHON = *.py +isys_PYTHON = $(srcdir)/*.py
pkgpyexec_LTLIBRARIES = _isys.la _isys_la_CFLAGS = $(PYTHON_CFLAGS) $(ISYS_CFLAGS) diff --git a/pyanaconda/packaging/Makefile.am b/pyanaconda/packaging/Makefile.am index 77c6f41..ee5bcef 100644 --- a/pyanaconda/packaging/Makefile.am +++ b/pyanaconda/packaging/Makefile.am @@ -19,6 +19,6 @@
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) packagingdir = $(pkgpyexecdir)/packaging -packaging_PYTHON = *.py +packaging_PYTHON = $(srcdir)/*.py
MAINTAINERCLEANFILES = Makefile.in diff --git a/pyanaconda/ui/Makefile.am b/pyanaconda/ui/Makefile.am index 69051fa..ecb5b4c 100644 --- a/pyanaconda/ui/Makefile.am +++ b/pyanaconda/ui/Makefile.am @@ -21,4 +21,4 @@ MAINTAINERCLEANFILES = Makefile.in
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) uidir = $(pkgpyexecdir)/ui -ui_PYTHON = *.py +ui_PYTHON = $(srcdir)/*.py diff --git a/pyanaconda/ui/gui/Makefile.am b/pyanaconda/ui/gui/Makefile.am index 51d43a8..272cebb 100644 --- a/pyanaconda/ui/gui/Makefile.am +++ b/pyanaconda/ui/gui/Makefile.am @@ -21,7 +21,7 @@ MAINTAINERCLEANFILES = Makefile.in
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) guidir = $(pkgpyexecdir)/ui/gui -gui_PYTHON = *.py +gui_PYTHON = $(srcdir)/*.py
uidir = $(datadir)/$(PACKAGE_NAME)/ui/ -dist_ui_DATA = *.glade +dist_ui_DATA = $(srcdir)/*.glade diff --git a/pyanaconda/ui/gui/categories/Makefile.am b/pyanaconda/ui/gui/categories/Makefile.am index 7a799da..ed3ecee 100644 --- a/pyanaconda/ui/gui/categories/Makefile.am +++ b/pyanaconda/ui/gui/categories/Makefile.am @@ -19,4 +19,4 @@ MAINTAINERCLEANFILES = Makefile.in
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) categoriesdir = $(pkgpyexecdir)/ui/gui/categories -categories_PYTHON = *.py +categories_PYTHON = $(srcdir)/*.py diff --git a/pyanaconda/ui/gui/hubs/Makefile.am b/pyanaconda/ui/gui/hubs/Makefile.am index ae520a6..d6a87c4 100644 --- a/pyanaconda/ui/gui/hubs/Makefile.am +++ b/pyanaconda/ui/gui/hubs/Makefile.am @@ -19,7 +19,7 @@ MAINTAINERCLEANFILES = Makefile.in
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) hubsdir = $(pkgpyexecdir)/ui/gui/hubs -hubs_PYTHON = *.py +hubs_PYTHON = $(srcdir)/*.py
uidir = $(datadir)/$(PACKAGE_NAME)/ui/hubs -dist_ui_DATA = *.glade +dist_ui_DATA = $(srcdir)/*.glade diff --git a/pyanaconda/ui/gui/spokes/Makefile.am b/pyanaconda/ui/gui/spokes/Makefile.am index a052dab..93d767a 100644 --- a/pyanaconda/ui/gui/spokes/Makefile.am +++ b/pyanaconda/ui/gui/spokes/Makefile.am @@ -21,7 +21,7 @@ MAINTAINERCLEANFILES = Makefile.in
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) spokesdir = $(pkgpyexecdir)/ui/gui/spokes -spokes_PYTHON = *.py +spokes_PYTHON = $(srcdir)/*.py
uidir = $(datadir)/$(PACKAGE_NAME)/ui/spokes -dist_ui_DATA = *.glade +dist_ui_DATA = $(srcdir)/*.glade diff --git a/pyanaconda/ui/gui/spokes/advstorage/Makefile.am b/pyanaconda/ui/gui/spokes/advstorage/Makefile.am index bcad43c..c18d3dc 100644 --- a/pyanaconda/ui/gui/spokes/advstorage/Makefile.am +++ b/pyanaconda/ui/gui/spokes/advstorage/Makefile.am @@ -19,7 +19,7 @@ MAINTAINERCLEANFILES = Makefile.in
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) spokesdir = $(pkgpyexecdir)/ui/gui/spokes/advstorage -spokes_PYTHON = *.py +spokes_PYTHON = $(srcdir)/*.py
uidir = $(datadir)/$(PACKAGE_NAME)/ui/spokes/advstorage -dist_ui_DATA = *.glade +dist_ui_DATA = $(srcdir)/*.glade diff --git a/pyanaconda/ui/gui/spokes/lib/Makefile.am b/pyanaconda/ui/gui/spokes/lib/Makefile.am index ecd597c..c872464 100644 --- a/pyanaconda/ui/gui/spokes/lib/Makefile.am +++ b/pyanaconda/ui/gui/spokes/lib/Makefile.am @@ -19,7 +19,7 @@ MAINTAINERCLEANFILES = Makefile.in
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) spokesdir = $(pkgpyexecdir)/ui/gui/spokes/lib -spokes_PYTHON = *.py +spokes_PYTHON = $(srcdir)/*.py
uidir = $(datadir)/$(PACKAGE_NAME)/ui/spokes/lib -dist_ui_DATA = *.glade +dist_ui_DATA = $(srcdir)/*.glade diff --git a/pyanaconda/ui/lib/Makefile.am b/pyanaconda/ui/lib/Makefile.am index 5098c96..378a6a8 100644 --- a/pyanaconda/ui/lib/Makefile.am +++ b/pyanaconda/ui/lib/Makefile.am @@ -19,4 +19,4 @@ MAINTAINERCLEANFILES = Makefile.in
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) commondir = $(pkgpyexecdir)/ui/lib -common_PYTHON = *.py +common_PYTHON = $(srcdir)/*.py diff --git a/pyanaconda/ui/tui/Makefile.am b/pyanaconda/ui/tui/Makefile.am index 9cc0ba1..389638e 100644 --- a/pyanaconda/ui/tui/Makefile.am +++ b/pyanaconda/ui/tui/Makefile.am @@ -21,4 +21,4 @@ MAINTAINERCLEANFILES = Makefile.in
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) tuidir = $(pkgpyexecdir)/ui/tui -tui_PYTHON = *.py +tui_PYTHON = $(srcdir)/*.py diff --git a/pyanaconda/ui/tui/hubs/Makefile.am b/pyanaconda/ui/tui/hubs/Makefile.am index f099b76..ca18e8e 100644 --- a/pyanaconda/ui/tui/hubs/Makefile.am +++ b/pyanaconda/ui/tui/hubs/Makefile.am @@ -21,4 +21,4 @@ MAINTAINERCLEANFILES = Makefile.in
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) hubsdir = $(pkgpyexecdir)/ui/tui/hubs -hubs_PYTHON = *.py +hubs_PYTHON = $(srcdir)/*.py diff --git a/pyanaconda/ui/tui/simpleline/Makefile.am b/pyanaconda/ui/tui/simpleline/Makefile.am index 555931b..191995c 100644 --- a/pyanaconda/ui/tui/simpleline/Makefile.am +++ b/pyanaconda/ui/tui/simpleline/Makefile.am @@ -21,4 +21,4 @@ MAINTAINERCLEANFILES = Makefile.in
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) simplelinedir = $(pkgpyexecdir)/ui/tui/simpleline -simpleline_PYTHON = *.py +simpleline_PYTHON = $(srcdir)/*.py diff --git a/pyanaconda/ui/tui/spokes/Makefile.am b/pyanaconda/ui/tui/spokes/Makefile.am index 96cdff9..505edcb 100644 --- a/pyanaconda/ui/tui/spokes/Makefile.am +++ b/pyanaconda/ui/tui/spokes/Makefile.am @@ -21,4 +21,4 @@ MAINTAINERCLEANFILES = Makefile.in
pkgpyexecdir = $(pyexecdir)/py$(PACKAGE_NAME) spokesdir = $(pkgpyexecdir)/ui/tui/spokes -spokes_PYTHON = *.py +spokes_PYTHON = $(srcdir)/*.py diff --git a/utils/log_picker/Makefile.am b/utils/log_picker/Makefile.am index a3fb172..e9cb273 100644 --- a/utils/log_picker/Makefile.am +++ b/utils/log_picker/Makefile.am @@ -19,6 +19,6 @@ SUBDIRS = sending
pkgpyexecdir = $(pyexecdir)/log_picker logpickerdir = $(pkgpyexecdir) -logpicker_PYTHON = *.py +logpicker_PYTHON = $(srcdir)/*.py
MAINTAINERCLEANFILES = Makefile.in diff --git a/utils/log_picker/sending/Makefile.am b/utils/log_picker/sending/Makefile.am index d898b3e..7f284b5 100644 --- a/utils/log_picker/sending/Makefile.am +++ b/utils/log_picker/sending/Makefile.am @@ -18,6 +18,6 @@
pkgpyexecdir = $(pyexecdir)/log_picker sendingdir = $(pkgpyexecdir)/sending -sending_PYTHON = *.py +sending_PYTHON = $(srcdir)/*.py
MAINTAINERCLEANFILES = Makefile.in diff --git a/widgets/data/tzmapdata/Makefile.am b/widgets/data/tzmapdata/Makefile.am index 89f11fe..2dd6029 100644 --- a/widgets/data/tzmapdata/Makefile.am +++ b/widgets/data/tzmapdata/Makefile.am @@ -17,7 +17,7 @@ # Author: Vratislav Podzimek vpodzime@redhat.com
timezonemap_datadir = $(datadir)/anaconda/tzmapdata -dist_timezonemap_data_DATA = *.png timezones_backward +dist_timezonemap_data_DATA = $(srcdir)/*.png timezones_backward
MAINTAINERCLEANFILES = Makefile.in
--- Makefile.am | 98 +++++++++++++++++++++++++++-------------------------- configure.ac | 2 +- scripts/makeupdates | 52 ++++++++++++++++++---------- 3 files changed, 85 insertions(+), 67 deletions(-)
diff --git a/Makefile.am b/Makefile.am index 756131b..363bdd0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -47,14 +47,14 @@ tag: @echo "Tagged as $(ARCHIVE_TAG)"
po-pull: - rm -f po/en@boldquot.gmo po/en@boldquot.po - rm -f po/en@quot.gmo po/en@quot.po + rm -f $(srcdir)/po/en@boldquot.gmo $(srcdir)/po/en@boldquot.po + rm -f $(srcdir)/po/en@quot.gmo $(srcdir)/po/en@quot.po rpm -q transifex-client &>/dev/null || ( echo "need to run: yum install transifex-client"; exit 1 ) tx pull $(TX_PULL_ARGS)
scratch: po-pull $(MAKE) ARCHIVE_TAG=HEAD dist - git checkout -- po/$(PACKAGE_NAME).pot + git checkout -- $(srcdir)/po/$(PACKAGE_NAME).pot
scratch-bumpver: po-pull @opts="-n $(PACKAGE_NAME) -v $(PACKAGE_VERSION) -r $(PACKAGE_RELEASE) -b $(PACKAGE_BUGREPORT)" ; \ @@ -67,11 +67,11 @@ scratch-bumpver: po-pull if [ ! -z "$(BZDEBUG)" ]; then \ opts="$${opts} -d" ; \ fi ; \ - scripts/makebumpver $${opts} || exit 1 ; \ + ( cd $(srcdir) && scripts/makebumpver $${opts} ) || exit 1 ; \ $(MAKE) -C po $(PACKAGE_NAME).pot-update ;
release: - $(MAKE) dist && $(MAKE) tag && git checkout -- po/$(PACKAGE_NAME).pot + $(MAKE) dist && $(MAKE) tag && git checkout -- $(srcdir)/po/$(PACKAGE_NAME).pot
api: doxygen docs/api.cfg @@ -87,12 +87,14 @@ bumpver: po-pull if [ ! -z "$(BZDEBUG)" ]; then \ opts="$${opts} -d" ; \ fi ; \ - scripts/makebumpver $${opts} || exit 1 ; \ - $(MAKE) -C po $(PACKAGE_NAME).pot-update ; \ + ( cd $(srcdir) && scripts/makebumpver $${opts} ) || exit 1 ; \ + $(MAKE) -C po $(PACKAGE_NAME).pot-update && \ tx push $(TX_PUSH_ARGS)
install-buildrequires: - yum install $$(grep BuildRequires: anaconda.spec.in | cut -d ' ' -f 2) + srcdir="$(srcdir)" && \ + : $${srcdir:=.} && \ + yum install $$(grep BuildRequires: $${srcdir}/anaconda.spec.in | cut -d ' ' -f 2)
# Generate an updates.img based on the changed files since the release # was tagged. Updates are copied to ./updates-img and then the image is @@ -105,59 +107,59 @@ updates: if [ "$${keep}" = "Y" ]; then \ opts="$${opts} -k" ; \ fi ; \ - scripts/makeupdates $${opts} + ( cd $(srcdir) && scripts/makeupdates $${opts} -b '$(abs_builddir)' )
# UNIT TESTING TARGETS unittests-logpicker: - PYTHONPATH=pyanaconda/isys/.libs:tests/:.:utils/ nosetests -v old_tests/logpicker_test + PYTHONPATH=$(builddir)/pyanaconda/isys/.libs:tests/:$(srcdir):utils/ nosetests -v old_tests/logpicker_test
# GUI TESTING runspoke: - ANACONDA_DATA=${PWD}/data \ - ANACONDA_WIDGETS_OVERRIDES=${PWD}/widgets/python \ - ANACONDA_WIDGETS_DATA=${PWD}/widgets/data \ - ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \ - PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \ - LD_LIBRARY_PATH=widgets/src/.libs \ - UIPATH=pyanaconda/ui/gui/ \ - GI_TYPELIB_PATH=widgets/src/ \ - pyanaconda/ui/gui/tools/run-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS} + ANACONDA_DATA=$(srcdir)/data \ + ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \ + ANACONDA_WIDGETS_DATA=$(srcdir)/widgets/data \ + ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \ + PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \ + LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \ + UIPATH=$(srcdir)/pyanaconda/ui/gui/ \ + GI_TYPELIB_PATH=$(builddir)/widgets/src/ \ + $(srcdir)/pyanaconda/ui/gui/tools/run-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS}
runhub: - ANACONDA_DATA=${PWD}/data \ - ANACONDA_WIDGETS_OVERRIDES=${PWD}/widgets/python \ - ANACONDA_WIDGETS_DATA=${PWD}/widgets/data \ - ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \ - PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \ - LD_LIBRARY_PATH=widgets/src/.libs \ - UIPATH=pyanaconda/ui/gui/ \ - GI_TYPELIB_PATH=widgets/src/ \ - pyanaconda/ui/gui/tools/run-hub.py ${HUB_MODULE} ${HUB_CLASS} + ANACONDA_DATA=$(srcdir)/data \ + ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \ + ANACONDA_WIDGETS_DATA=$(srcdir)/widgets/data \ + ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \ + PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \ + LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \ + UIPATH=$(srcdir)/pyanaconda/ui/gui/ \ + GI_TYPELIB_PATH=$(builddir)/widgets/src/ \ + $(srcdir)/pyanaconda/ui/gui/tools/run-hub.py ${HUB_MODULE} ${HUB_CLASS}
runtextspoke: - ANACONDA_DATA=${PWD}/data \ - ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \ - PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \ - LD_LIBRARY_PATH=widgets/src/.libs \ - pyanaconda/ui/tui/tools/run-text-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS} + ANACONDA_DATA=$(srcdir)/data \ + ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \ + PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \ + LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \ + $(srcdir)/pyanaconda/ui/tui/tools/run-text-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS}
runtexthub: - ANACONDA_DATA=${PWD}/data \ - ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \ - PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \ - LD_LIBRARY_PATH=widgets/src/.libs \ - pyanaconda/ui/tui/tools/run-text-hub.py ${HUB_MODULE} ${HUB_CLASS} + ANACONDA_DATA=$(srcdir)/data \ + ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \ + PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \ + LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \ + $(srcdir)/pyanaconda/ui/tui/tools/run-text-hub.py ${HUB_MODULE} ${HUB_CLASS}
runglade: - ANACONDA_DATA=${PWD}/data \ - ANACONDA_WIDGETS_OVERRIDES=${PWD}/widgets/python \ - ANACONDA_WIDGETS_DATA=${PWD}/widgets/data \ - ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \ - PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \ - LD_LIBRARY_PATH=widgets/src/.libs \ - UIPATH=pyanaconda/ui/gui/ \ - GI_TYPELIB_PATH=widgets/src/ \ - GLADE_CATALOG_SEARCH_PATH=${PWD}/widgets/glade \ - GLADE_MODULE_SEARCH_PATH=${PWD}/widgets/src/.libs \ + ANACONDA_DATA=$(srcdir)/data \ + ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \ + ANACONDA_WIDGETS_DATA=$(srcdir)/widgets/data \ + ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \ + PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \ + LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \ + UIPATH=$(srcdir)/pyanaconda/ui/gui/ \ + GI_TYPELIB_PATH=$(builddir)/widgets/src/ \ + GLADE_CATALOG_SEARCH_PATH=$(srcdir)/widgets/glade \ + GLADE_MODULE_SEARCH_PATH=$(builddir)/widgets/src/.libs \ glade ${GLADE_FILE} diff --git a/configure.ac b/configure.ac index 624adad..2be4698 100644 --- a/configure.ac +++ b/configure.ac @@ -208,7 +208,7 @@ CFLAGS="`cflags_filter $CFLAGS`" LIBS=
# Get the release number from the spec file -rel="`awk '/Release:/ { split($2, r, "%"); print r[[1]] }' anaconda.spec.in`" +rel="`awk '/Release:/ { split($2, r, "%"); print r[[1]] }' $srcdir/anaconda.spec.in`" AC_SUBST(PACKAGE_RELEASE, [$rel])
# Perform arch related tests diff --git a/scripts/makeupdates b/scripts/makeupdates index 273428a..f34b4c7 100755 --- a/scripts/makeupdates +++ b/scripts/makeupdates @@ -312,15 +312,22 @@ def isysChanged(tag): def widgetsChanged(tag): return _compilableChanged(tag, 'widgets')
-def copyUpdatedIsys(updates, cwd): - os.chdir(cwd) - - if not os.path.isfile('Makefile'): +def checkAutotools(srcdir, builddir): + # Assumes that cwd is srcdir + if not os.path.isfile(os.path.join(builddir, 'Makefile')): if not os.path.isfile('configure'): os.system('./autogen.sh') - os.system('./configure --prefix=`rpm --eval %_prefix`') + os.chdir(builddir) + os.system(os.path.join(srcdir, 'configure') + ' --prefix=`rpm --eval %_prefix` --enable-gtk-doc --enable-introspection') + os.chdir(srcdir) + +def copyUpdatedIsys(updates, srcdir, builddir): + os.chdir(srcdir) + print("copyUpdatedIsys BUILDDIR %s" % builddir) + + checkAutotools(srcdir, builddir)
- os.system('make -j %d' % multiprocessing.cpu_count()) + os.system('make -C %s -j %d' % (builddir, multiprocessing.cpu_count()))
# Updates get overlaid onto the runtime filesystem. Anaconda expects them # to be in /run/install/updates, so put them in @@ -332,13 +339,13 @@ def copyUpdatedIsys(updates, cwd): if not os.path.isdir(tmpupdates): os.makedirs(tmpupdates)
- isysmodule = os.path.realpath(cwd + '/pyanaconda/isys/.libs/_isys.so') + isysmodule = os.path.realpath(os.path.join(builddir,'pyanaconda/isys/.libs/_isys.so'))
if os.path.isfile(isysmodule): shutil.copy2(isysmodule, tmpupdates)
-def copyUpdatedWidgets(updates, cwd): - os.chdir(cwd) +def copyUpdatedWidgets(updates, srcdir, builddir): + os.chdir(srcdir)
if os.path.isdir("/lib64"): libdir = "/lib64/" @@ -351,22 +358,19 @@ def copyUpdatedWidgets(updates, cwd): if not os.path.isdir(updates + libdir + "girepository-1.0"): os.makedirs(updates + libdir + "girepository-1.0")
- if not os.path.isfile('Makefile'): - if not os.path.isfile('configure'): - os.system('./autogen.sh') - os.system('./configure --prefix=`rpm --eval %_prefix` --enable-gtk-doc --enable-introspection') + checkAutotools(srcdir, builddir)
- os.system('make') + os.system('make -C %s' % builddir)
files = ["libAnacondaWidgets.so", "libAnacondaWidgets.so.1", "libAnacondaWidgets.so.1.0.0"] for f in files: - path = os.path.normpath(cwd + "/widgets/src/.libs/" + f) + path = os.path.normpath(builddir + "/widgets/src/.libs/" + f) if os.path.islink(path) and not os.path.exists(updates + libdir + os.path.basename(path)): os.symlink(os.readlink(path), updates + libdir + os.path.basename(path)) elif os.path.isfile(path): shutil.copy2(path, updates + libdir)
- typelib = os.path.realpath(cwd + "/widgets/src/AnacondaWidgets-1.0.typelib") + typelib = os.path.realpath(builddir + "/widgets/src/AnacondaWidgets-1.0.typelib") if os.path.isfile(typelib): shutil.copy2(typelib, updates + libdir + "girepository-1.0")
@@ -782,6 +786,9 @@ def main(): parser.add_argument('-f', '--fetch', action='store', type=str, metavar="ARCH", help='autofetch new dependencies from Koji for ARCH')
+ parser.add_argument('-b', '--builddir', action='store', type=str, + metavar='BUILDDIR', help='build directory for shared objects') + args = parser.parse_args()
if not os.path.isfile(configure) and not os.path.isfile(spec): @@ -796,6 +803,15 @@ def main(): args.tag = getArchiveTagOffset(configure, spec, args.offset) sys.stdout.write("Using tag: %s\n" % args.tag)
+ if args.builddir: + if os.path.isabs(args.builddir): + builddir = args.builddir + else: + builddir = os.path.join(cwd, args.builddir) + else: + builddir = cwd + print("BUILDDIR %s" % builddir) + if not os.path.isdir(updates): os.makedirs(updates)
@@ -803,10 +819,10 @@ def main():
if args.compile: if isysChanged(args.tag): - copyUpdatedIsys(updates, cwd) + copyUpdatedIsys(updates, cwd, builddir)
if widgetsChanged(args.tag): - copyUpdatedWidgets(updates, cwd) + copyUpdatedWidgets(updates, cwd, builddir)
if args.add_rpms: # as using -a or --add mutltiple times
On Thu, 2013-09-12 at 15:22 -0400, David Shea wrote:
These patches let you create a directory and build in that directory, instead of building in place in the source tree. For example, you can do something like mkdir build && cd build && ../configure --enable-gtk-doc && make.
Bonus: the distcheck target works now.
This may come handy, thanks! ACK.
anaconda-patches@lists.fedorahosted.org