Update anaconda to 20.25.16

Apply result of "git diff anaconda-18.37.11-1..anaconda-20.25.16-1" and
resolve conflicts.
This commit is contained in:
Marek Marczykowski-Górecki 2014-04-07 14:38:09 +02:00
parent 7f2e76acb4
commit f73b3741f0
538 changed files with 287685 additions and 237898 deletions

9
anaconda/.tx/config Normal file
View File

@ -0,0 +1,9 @@
[anaconda.f20-branch]
file_filter = po/<lang>.po
source_file = po/anaconda.pot
source_lang = en
type = PO
[main]
host = https://www.transifex.com

1282
anaconda/ABOUT-NLS Normal file

File diff suppressed because it is too large Load Diff

View File

@ -19,14 +19,15 @@
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4
SUBDIRS = pyanaconda po data \ SUBDIRS = data docs dracut po pyanaconda scripts tests widgets utils
tests utils scripts docs dracut widgets
EXTRA_DIST = config.rpath COPYING EXTRA_DIST = config.rpath COPYING
MAINTAINERCLEANFILES = Makefile.in config.guess config.h.in config.sub \ MAINTAINERCLEANFILES = Makefile.in config.guess config.h.in config.sub \
depcomp install-sh ltmain.sh missing ABOUT-NLS \ depcomp install-sh ltmain.sh missing ABOUT-NLS \
INSTALL aclocal.m4 configure *.pyc py-compile INSTALL aclocal.m4 configure *.pyc py-compile \
m4/* config.rpath po/Makefile.in.in po/Rules-quot \
test-driver
CLEANFILES = *~ CLEANFILES = *~
@ -38,32 +39,39 @@ dist_sbin_SCRIPTS = anaconda
ARCHIVE_TAG = $(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE) ARCHIVE_TAG = $(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)
sed_verbose = $(sed_verbose_$(V))
sed_verbose_ = $(sed_verbose_$(AM_DEFAULT_VERBOSITY))
sed_verbose_0 = @echo " SED "$@;
TX_PULL_ARGS = -a --disable-overwrite TX_PULL_ARGS = -a --disable-overwrite
TX_PUSH_ARGS = -s TX_PUSH_ARGS = -s
#$(PACKAGE_NAME).spec: $(PACKAGE_NAME).spec.in
# $(sed_verbose)sed -e 's/#VERSION#/$(PACKAGE_VERSION)/' < $< > $@
tag: tag:
@git tag -s -a -m "Tag as $(ARCHIVE_TAG)" $(ARCHIVE_TAG) @git tag -s -a -m "Tag as $(ARCHIVE_TAG)" $(ARCHIVE_TAG)
@echo "Tagged as $(ARCHIVE_TAG)" @echo "Tagged as $(ARCHIVE_TAG)"
po-pull: po-pull:
rm -f po/en@boldquot.gmo po/en@boldquot.po rm -f $(srcdir)/po/en@boldquot.gmo $(srcdir)/po/en@boldquot.po
rm -f po/en@quot.gmo po/en@quot.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 ) rpm -q transifex-client &>/dev/null || ( echo "need to run: yum install transifex-client"; exit 1 )
tx pull $(TX_PULL_ARGS) tx pull $(TX_PULL_ARGS)
scratch: po-pull scratch: po-pull
$(MAKE) ARCHIVE_TAG=HEAD dist $(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)" ; \
if [ ! -z "$(IGNORE)" ]; then \
opts="$${opts} -i $(IGNORE)" ; \
fi ; \
if [ ! -z "$(MAP)" ]; then \
opts="$${opts} -m $(MAP)" ; \
fi ; \
if [ ! -z "$(BZDEBUG)" ]; then \
opts="$${opts} -d" ; \
fi ; \
( cd $(srcdir) && scripts/makebumpver $${opts} ) || exit 1 ; \
$(MAKE) -C po $(PACKAGE_NAME).pot-update ;
release: release:
$(MAKE) dist && $(MAKE) tag && git checkout -- po/$(PACKAGE_NAME).pot $(MAKE) dist && $(MAKE) tag && git checkout -- $(srcdir)/po/$(PACKAGE_NAME).pot
api: api:
doxygen docs/api.cfg doxygen docs/api.cfg
@ -79,12 +87,23 @@ bumpver: po-pull
if [ ! -z "$(BZDEBUG)" ]; then \ if [ ! -z "$(BZDEBUG)" ]; then \
opts="$${opts} -d" ; \ opts="$${opts} -d" ; \
fi ; \ fi ; \
scripts/makebumpver $${opts} || exit 1 ; \ ( cd $(srcdir) && scripts/makebumpver $${opts} ) || exit 1 ; \
$(MAKE) -C po $(PACKAGE_NAME).pot-update ; \ $(MAKE) -C po $(PACKAGE_NAME).pot-update && \
tx push $(TX_PUSH_ARGS) tx push $(TX_PUSH_ARGS)
# Install all packages specified as BuildRequires in the Anaconda specfile
# -> installs packages needed to build Anaconda
install-buildrequires: install-buildrequires:
yum install $$(grep BuildRequires: anaconda.spec | cut -d ' ' -f 2) srcdir="$(srcdir)" && \
: $${srcdir:=.} && \
yum install $$(grep BuildRequires: $${srcdir}/anaconda.spec.in | cut -d ' ' -f 2)
# Install all packages specified as Requires in the Anaconda specfile
# -> installs packages needed to run Anaconda and the Anaconda unit tests
install-requires:
srcdir="$(srcdir)" && \
: $${srcdir:=.} && \
yum install $$(grep Requires: $${srcdir}/anaconda.spec.in | cut -d ' ' -f 2)
# Generate an updates.img based on the changed files since the release # 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 # was tagged. Updates are copied to ./updates-img and then the image is
@ -97,62 +116,59 @@ updates:
if [ "$${keep}" = "Y" ]; then \ if [ "$${keep}" = "Y" ]; then \
opts="$${opts} -k" ; \ opts="$${opts} -k" ; \
fi ; \ fi ; \
scripts/makeupdates $${opts} ( cd $(srcdir) && scripts/makeupdates $${opts} -b '$(abs_builddir)' )
# UNIT TESTING TARGETS # UNIT TESTING TARGETS
unittest:
PYTHONPATH=tests/:. nosetests --exclude=logpicker -a \!acceptance,\!slow tests/
unittests-logpicker: unittests-logpicker:
PYTHONPATH=tests/:.:utils/ nosetests tests/logpicker_test PYTHONPATH=$(builddir)/pyanaconda/isys/.libs:tests/:$(srcdir):utils/ nosetests -v old_tests/logpicker_test
# GUI TESTING # GUI TESTING
runspoke: runspoke:
ANACONDA_DATA=${PWD}/data \ ANACONDA_DATA=$(srcdir)/data \
ANACONDA_WIDGETS_OVERRIDES=${PWD}/widgets/python \ ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \
ANACONDA_WIDGETS_DATA=${PWD}/widgets/data \ ANACONDA_WIDGETS_DATA=$(srcdir)/widgets/data \
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \ ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \ PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
LD_LIBRARY_PATH=widgets/src/.libs \ LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
UIPATH=pyanaconda/ui/gui/ \ UIPATH=$(srcdir)/pyanaconda/ui/gui/ \
GI_TYPELIB_PATH=widgets/src/ \ GI_TYPELIB_PATH=$(builddir)/widgets/src/ \
pyanaconda/ui/gui/tools/run-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS} $(srcdir)/pyanaconda/ui/gui/tools/run-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS}
runhub: runhub:
ANACONDA_DATA=${PWD}/data \ ANACONDA_DATA=$(srcdir)/data \
ANACONDA_WIDGETS_OVERRIDES=${PWD}/widgets/python \ ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \
ANACONDA_WIDGETS_DATA=${PWD}/widgets/data \ ANACONDA_WIDGETS_DATA=$(srcdir)/widgets/data \
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \ ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \ PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
LD_LIBRARY_PATH=widgets/src/.libs \ LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
UIPATH=pyanaconda/ui/gui/ \ UIPATH=$(srcdir)/pyanaconda/ui/gui/ \
GI_TYPELIB_PATH=widgets/src/ \ GI_TYPELIB_PATH=$(builddir)/widgets/src/ \
pyanaconda/ui/gui/tools/run-hub.py ${HUB_MODULE} ${HUB_CLASS} $(srcdir)/pyanaconda/ui/gui/tools/run-hub.py ${HUB_MODULE} ${HUB_CLASS}
runtextspoke: runtextspoke:
ANACONDA_DATA=${PWD}/data \ ANACONDA_DATA=$(srcdir)/data \
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \ ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \ PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
LD_LIBRARY_PATH=widgets/src/.libs \ LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
pyanaconda/ui/tui/tools/run-text-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS} $(srcdir)/pyanaconda/ui/tui/tools/run-text-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS}
runtexthub: runtexthub:
ANACONDA_DATA=${PWD}/data \ ANACONDA_DATA=$(srcdir)/data \
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \ ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \ PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
LD_LIBRARY_PATH=widgets/src/.libs \ LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
pyanaconda/ui/tui/tools/run-text-hub.py ${HUB_MODULE} ${HUB_CLASS} $(srcdir)/pyanaconda/ui/tui/tools/run-text-hub.py ${HUB_MODULE} ${HUB_CLASS}
runglade: runglade:
ANACONDA_DATA=${PWD}/data \ ANACONDA_DATA=$(srcdir)/data \
ANACONDA_WIDGETS_OVERRIDES=${PWD}/widgets/python \ ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \
ANACONDA_WIDGETS_DATA=${PWD}/widgets/data \ ANACONDA_WIDGETS_DATA=$(srcdir)/widgets/data \
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \ ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \ PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
LD_LIBRARY_PATH=widgets/src/.libs \ LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
UIPATH=pyanaconda/ui/gui/ \ UIPATH=$(srcdir)/pyanaconda/ui/gui/ \
GI_TYPELIB_PATH=widgets/src/ \ GI_TYPELIB_PATH=$(builddir)/widgets/src/ \
GLADE_CATALOG_SEARCH_PATH=${PWD}/widgets/glade \ GLADE_CATALOG_SEARCH_PATH=$(srcdir)/widgets/glade \
GLADE_MODULE_SEARCH_PATH=${PWD}/widgets/src/.libs \ GLADE_MODULE_SEARCH_PATH=$(builddir)/widgets/src/.libs \
glade ${GLADE_FILE} glade ${GLADE_FILE}

373
anaconda/aclocal.m4 vendored
View File

@ -1,6 +1,6 @@
# generated automatically by aclocal 1.12.2 -*- Autoconf -*- # generated automatically by aclocal 1.13.4 -*- Autoconf -*-
# Copyright (C) 1996-2012 Free Software Foundation, Inc. # Copyright (C) 1996-2013 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
@ -11,6 +11,7 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE. # PARTICULAR PURPOSE.
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
m4_ifndef([AC_AUTOCONF_VERSION], m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
@ -19,58 +20,6 @@ You have another version of autoconf. It may work, but is not guaranteed to.
If you have problems, you may need to regenerate the build system entirely. If you have problems, you may need to regenerate the build system entirely.
To do so, use the procedure documented by the package, typically 'autoreconf'.])]) To do so, use the procedure documented by the package, typically 'autoreconf'.])])
# intlmacosx.m4 serial 3 (gettext-0.18)
dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl
dnl This file can can be used in projects which are not available under
dnl the GNU General Public License or the GNU Library General Public
dnl License but which still want to provide support for the GNU gettext
dnl functionality.
dnl Please note that the actual code of the GNU gettext library is covered
dnl by the GNU Library General Public License, and the rest of the GNU
dnl gettext package package is covered by the GNU General Public License.
dnl They are *not* in the public domain.
dnl Checks for special options needed on MacOS X.
dnl Defines INTL_MACOSX_LIBS.
AC_DEFUN([gt_INTL_MACOSX],
[
dnl Check for API introduced in MacOS X 10.2.
AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
[gt_cv_func_CFPreferencesCopyAppValue],
[gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
[CFPreferencesCopyAppValue(NULL, NULL)],
[gt_cv_func_CFPreferencesCopyAppValue=yes],
[gt_cv_func_CFPreferencesCopyAppValue=no])
LIBS="$gt_save_LIBS"])
if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
[Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
fi
dnl Check for API introduced in MacOS X 10.3.
AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
[gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
[gt_cv_func_CFLocaleCopyCurrent=yes],
[gt_cv_func_CFLocaleCopyCurrent=no])
LIBS="$gt_save_LIBS"])
if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
[Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
fi
INTL_MACOSX_LIBS=
if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
fi
AC_SUBST([INTL_MACOSX_LIBS])
])
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
# serial 1 (pkg-config-0.24) # serial 1 (pkg-config-0.24)
# #
@ -271,24 +220,22 @@ m4_popdef([pkg_default])
m4_popdef([pkg_description]) m4_popdef([pkg_description])
]) dnl PKG_NOARCH_INSTALLDIR ]) dnl PKG_NOARCH_INSTALLDIR
# Copyright (C) 2002-2012 Free Software Foundation, Inc. # Copyright (C) 2002-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 8
# AM_AUTOMAKE_VERSION(VERSION) # AM_AUTOMAKE_VERSION(VERSION)
# ---------------------------- # ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been # Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y. # generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.) # (This private macro should not be called outside this file.)
AC_DEFUN([AM_AUTOMAKE_VERSION], AC_DEFUN([AM_AUTOMAKE_VERSION],
[am__api_version='1.12' [am__api_version='1.13'
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
dnl require some minimum version. Point them to the right macro. dnl require some minimum version. Point them to the right macro.
m4_if([$1], [1.12.2], [], m4_if([$1], [1.13.4], [],
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
]) ])
@ -304,21 +251,19 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.12.2])dnl [AM_AUTOMAKE_VERSION([1.13.4])dnl
m4_ifndef([AC_AUTOCONF_VERSION], m4_ifndef([AC_AUTOCONF_VERSION],
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# AM_AUX_DIR_EXPAND -*- Autoconf -*- # AM_AUX_DIR_EXPAND -*- Autoconf -*-
# Copyright (C) 2001-2012 Free Software Foundation, Inc. # Copyright (C) 2001-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 2
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
# '$srcdir', '$srcdir/..', or '$srcdir/../..'. # '$srcdir', '$srcdir/..', or '$srcdir/../..'.
@ -366,14 +311,12 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
# AM_CONDITIONAL -*- Autoconf -*- # AM_CONDITIONAL -*- Autoconf -*-
# Copyright (C) 1997-2012 Free Software Foundation, Inc. # Copyright (C) 1997-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 10
# AM_CONDITIONAL(NAME, SHELL-CONDITION) # AM_CONDITIONAL(NAME, SHELL-CONDITION)
# ------------------------------------- # -------------------------------------
# Define a conditional. # Define a conditional.
@ -399,13 +342,12 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]]) Usually this means the macro was only invoked conditionally.]])
fi])]) fi])])
# Copyright (C) 1999-2012 Free Software Foundation, Inc. # Copyright (C) 1999-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 17
# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
# written in clear, in which case automake, when reading aclocal.m4, # written in clear, in which case automake, when reading aclocal.m4,
@ -591,19 +533,18 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
# Generate code to set up dependency tracking. -*- Autoconf -*- # Generate code to set up dependency tracking. -*- Autoconf -*-
# Copyright (C) 1999-2012 Free Software Foundation, Inc. # Copyright (C) 1999-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 6
# _AM_OUTPUT_DEPENDENCY_COMMANDS # _AM_OUTPUT_DEPENDENCY_COMMANDS
# ------------------------------ # ------------------------------
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
[{ [{
# Autoconf 2.62 quotes --file arguments for eval, but not when files # Older Autoconf quotes --file arguments for eval, but not when files
# are listed without --file. Let's play safe and only enable the eval # are listed without --file. Let's play safe and only enable the eval
# if we detect the quoting. # if we detect the quoting.
case $CONFIG_FILES in case $CONFIG_FILES in
@ -632,7 +573,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue test -z "$DEPDIR" && continue
am__include=`sed -n 's/^am__include = //p' < "$mf"` am__include=`sed -n 's/^am__include = //p' < "$mf"`
test -z "am__include" && continue test -z "$am__include" && continue
am__quote=`sed -n 's/^am__quote = //p' < "$mf"` am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
# Find all dependency output files, they are included files with # Find all dependency output files, they are included files with
# $(DEPDIR) in their names. We invoke sed twice because it is the # $(DEPDIR) in their names. We invoke sed twice because it is the
@ -668,14 +609,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# Do all the work for Automake. -*- Autoconf -*- # Do all the work for Automake. -*- Autoconf -*-
# Copyright (C) 1996-2012 Free Software Foundation, Inc. # Copyright (C) 1996-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 19
# This macro actually does too much. Some checks are only needed if # This macro actually does too much. Some checks are only needed if
# your package does certain things. But this isn't really a big deal. # your package does certain things. But this isn't really a big deal.
@ -691,7 +630,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
# arguments mandatory, and then we can depend on a new Autoconf # arguments mandatory, and then we can depend on a new Autoconf
# release and drop the old call support. # release and drop the old call support.
AC_DEFUN([AM_INIT_AUTOMAKE], AC_DEFUN([AM_INIT_AUTOMAKE],
[AC_PREREQ([2.62])dnl [AC_PREREQ([2.65])dnl
dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl Autoconf wants to disallow AM_ names. We explicitly allow
dnl the ones we care about. dnl the ones we care about.
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@ -721,8 +660,7 @@ AC_SUBST([CYGPATH_W])
dnl Distinguish between old-style and new-style calls. dnl Distinguish between old-style and new-style calls.
m4_ifval([$2], m4_ifval([$2],
[AC_DIAGNOSE([obsolete], [AC_DIAGNOSE([obsolete],
[$0: two- and three-arguments forms are deprecated. For more info, see: [$0: two- and three-arguments forms are deprecated.])
http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])], AC_SUBST([VERSION], [$2])],
@ -776,18 +714,15 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
[_AM_DEPENDENCIES([OBJC])], [_AM_DEPENDENCIES([OBJC])],
[m4_define([AC_PROG_OBJC], [m4_define([AC_PROG_OBJC],
m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
dnl Support for Objective C++ was only introduced in Autoconf 2.65, AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
dnl but we still cater to Autoconf 2.62.
m4_ifdef([AC_PROG_OBJCXX],
[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
[_AM_DEPENDENCIES([OBJCXX])], [_AM_DEPENDENCIES([OBJCXX])],
[m4_define([AC_PROG_OBJCXX], [m4_define([AC_PROG_OBJCXX],
m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
]) ])
_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl AC_REQUIRE([AM_SILENT_RULES])dnl
dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the dnl The testsuite driver may need to know about EXEEXT, so add the
dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT], [m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
@ -821,14 +756,12 @@ for _am_header in $config_headers :; do
done done
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
# Copyright (C) 2001-2012 Free Software Foundation, Inc. # Copyright (C) 2001-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 8
# AM_PROG_INSTALL_SH # AM_PROG_INSTALL_SH
# ------------------ # ------------------
# Define $install_sh. # Define $install_sh.
@ -844,14 +777,12 @@ if test x"${install_sh}" != xset; then
fi fi
AC_SUBST([install_sh])]) AC_SUBST([install_sh])])
# Copyright (C) 2003-2012 Free Software Foundation, Inc. # Copyright (C) 2003-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 2
# Check whether the underlying file-system supports filenames # Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't. # with a leading dot. For instance MS-DOS doesn't.
AC_DEFUN([AM_SET_LEADING_DOT], AC_DEFUN([AM_SET_LEADING_DOT],
@ -867,14 +798,12 @@ AC_SUBST([am__leading_dot])])
# Check to see how 'make' treats includes. -*- Autoconf -*- # Check to see how 'make' treats includes. -*- Autoconf -*-
# Copyright (C) 2001-2012 Free Software Foundation, Inc. # Copyright (C) 2001-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 5
# AM_MAKE_INCLUDE() # AM_MAKE_INCLUDE()
# ----------------- # -----------------
# Check to see how make treats includes. # Check to see how make treats includes.
@ -919,14 +848,12 @@ rm -f confinc confmf
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
# Copyright (C) 1997-2012 Free Software Foundation, Inc. # Copyright (C) 1997-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 7
# AM_MISSING_PROG(NAME, PROGRAM) # AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------ # ------------------------------
AC_DEFUN([AM_MISSING_PROG], AC_DEFUN([AM_MISSING_PROG],
@ -934,11 +861,10 @@ AC_DEFUN([AM_MISSING_PROG],
$1=${$1-"${am_missing_run}$2"} $1=${$1-"${am_missing_run}$2"}
AC_SUBST($1)]) AC_SUBST($1)])
# AM_MISSING_HAS_RUN # AM_MISSING_HAS_RUN
# ------------------ # ------------------
# Define MISSING if not defined so far and test if it supports --run. # Define MISSING if not defined so far and test if it is modern enough.
# If it does, set am_missing_run to use it, otherwise, to nothing. # If it is, set am_missing_run to use it, otherwise, to nothing.
AC_DEFUN([AM_MISSING_HAS_RUN], AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl AC_REQUIRE_AUX_FILE([missing])dnl
@ -951,29 +877,28 @@ if test x"${MISSING+set}" != xset; then
esac esac
fi fi
# Use eval to expand $SHELL # Use eval to expand $SHELL
if eval "$MISSING --run true"; then if eval "$MISSING --is-lightweight"; then
am_missing_run="$MISSING --run " am_missing_run="$MISSING "
else else
am_missing_run= am_missing_run=
AC_MSG_WARN(['missing' script is too old or missing]) AC_MSG_WARN(['missing' script is too old or missing])
fi fi
]) ])
# Copyright (C) 2003-2012 Free Software Foundation, Inc. # Copyright (C) 2003-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 3
# AM_PROG_MKDIR_P # AM_PROG_MKDIR_P
# --------------- # ---------------
# Check for 'mkdir -p'. # Check for 'mkdir -p'.
AC_DEFUN([AM_PROG_MKDIR_P], AC_DEFUN([AM_PROG_MKDIR_P],
[AC_PREREQ([2.60])dnl [AC_PREREQ([2.60])dnl
AC_REQUIRE([AC_PROG_MKDIR_P])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl
dnl FIXME to be removed in Automake 1.13. dnl FIXME we are no longer going to remove this! adjust warning
dnl FIXME message accordingly.
AC_DIAGNOSE([obsolete], AC_DIAGNOSE([obsolete],
[$0: this macro is deprecated, and will soon be removed. [$0: this macro is deprecated, and will soon be removed.
You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead, You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead,
@ -994,14 +919,12 @@ esac
# Helper functions for option handling. -*- Autoconf -*- # Helper functions for option handling. -*- Autoconf -*-
# Copyright (C) 2001-2012 Free Software Foundation, Inc. # Copyright (C) 2001-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 6
# _AM_MANGLE_OPTION(NAME) # _AM_MANGLE_OPTION(NAME)
# ----------------------- # -----------------------
AC_DEFUN([_AM_MANGLE_OPTION], AC_DEFUN([_AM_MANGLE_OPTION],
@ -1025,13 +948,12 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION], AC_DEFUN([_AM_IF_OPTION],
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
# Copyright (C) 1999-2012 Free Software Foundation, Inc. # Copyright (C) 1999-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 9
# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
@ -1060,7 +982,7 @@ AC_DEFUN([AM_PATH_PYTHON],
dnl Find a Python interpreter. Python versions prior to 2.0 are not dnl Find a Python interpreter. Python versions prior to 2.0 are not
dnl supported. (2.0 was released on October 16, 2000). dnl supported. (2.0 was released on October 16, 2000).
m4_define_default([_AM_PYTHON_INTERPRETER_LIST], m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
[python python2 python3 python3.2 python3.1 python3.0 python2.7 dnl [python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0]) python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
AC_ARG_VAR([PYTHON], [the Python interpreter]) AC_ARG_VAR([PYTHON], [the Python interpreter])
@ -1129,6 +1051,25 @@ AC_DEFUN([AM_PATH_PYTHON],
[am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
# Just factor out some code duplication.
am_python_setup_sysconfig="\
import sys
# Prefer sysconfig over distutils.sysconfig, for better compatibility
# with python 3.x. See automake bug#10227.
try:
import sysconfig
except ImportError:
can_use_sysconfig = 0
else:
can_use_sysconfig = 1
# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
# <https://github.com/pypa/virtualenv/issues/118>
try:
from platform import python_implementation
if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7':
can_use_sysconfig = 0
except ImportError:
pass"
dnl Set up 4 directories: dnl Set up 4 directories:
@ -1145,7 +1086,14 @@ AC_DEFUN([AM_PATH_PYTHON],
else else
am_py_prefix=$prefix am_py_prefix=$prefix
fi fi
am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null` am_cv_python_pythondir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
else:
from distutils import sysconfig
sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
sys.stdout.write(sitedir)"`
case $am_cv_python_pythondir in case $am_cv_python_pythondir in
$am_py_prefix*) $am_py_prefix*)
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
@ -1180,7 +1128,14 @@ AC_DEFUN([AM_PATH_PYTHON],
else else
am_py_exec_prefix=$exec_prefix am_py_exec_prefix=$exec_prefix
fi fi
am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null` am_cv_python_pyexecdir=`$PYTHON -c "
$am_python_setup_sysconfig
if can_use_sysconfig:
sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
else:
from distutils import sysconfig
sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
sys.stdout.write(sitedir)"`
case $am_cv_python_pyexecdir in case $am_cv_python_pyexecdir in
$am_py_exec_prefix*) $am_py_exec_prefix*)
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
@ -1228,14 +1183,12 @@ for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
sys.exit(sys.hexversion < minverhex)" sys.exit(sys.hexversion < minverhex)"
AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
# Copyright (C) 2001-2012 Free Software Foundation, Inc. # Copyright (C) 2001-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 1
# AM_RUN_LOG(COMMAND) # AM_RUN_LOG(COMMAND)
# ------------------- # -------------------
# Run COMMAND, save the exit status in ac_status, and log it. # Run COMMAND, save the exit status in ac_status, and log it.
@ -1249,14 +1202,12 @@ AC_DEFUN([AM_RUN_LOG],
# Check to make sure that the build environment is sane. -*- Autoconf -*- # Check to make sure that the build environment is sane. -*- Autoconf -*-
# Copyright (C) 1996-2012 Free Software Foundation, Inc. # Copyright (C) 1996-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 9
# AM_SANITY_CHECK # AM_SANITY_CHECK
# --------------- # ---------------
AC_DEFUN([AM_SANITY_CHECK], AC_DEFUN([AM_SANITY_CHECK],
@ -1332,14 +1283,12 @@ AC_CONFIG_COMMANDS_PRE(
rm -f conftest.file rm -f conftest.file
]) ])
# Copyright (C) 2009-2012 Free Software Foundation, Inc. # Copyright (C) 2009-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 3
# AM_SILENT_RULES([DEFAULT]) # AM_SILENT_RULES([DEFAULT])
# -------------------------- # --------------------------
# Enable less verbose build rules; with the default set to DEFAULT # Enable less verbose build rules; with the default set to DEFAULT
@ -1394,14 +1343,12 @@ AC_SUBST([AM_BACKSLASH])dnl
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
]) ])
# Copyright (C) 2001-2012 Free Software Foundation, Inc. # Copyright (C) 2001-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 2
# AM_PROG_INSTALL_STRIP # AM_PROG_INSTALL_STRIP
# --------------------- # ---------------------
# One issue with vendor 'install' (even GNU) is that you can't # One issue with vendor 'install' (even GNU) is that you can't
@ -1424,14 +1371,12 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
AC_SUBST([INSTALL_STRIP_PROGRAM])]) AC_SUBST([INSTALL_STRIP_PROGRAM])])
# Copyright (C) 2006-2012 Free Software Foundation, Inc. # Copyright (C) 2006-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 3
# _AM_SUBST_NOTMAKE(VARIABLE) # _AM_SUBST_NOTMAKE(VARIABLE)
# --------------------------- # ---------------------------
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@ -1445,14 +1390,12 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Check how to create a tarball. -*- Autoconf -*- # Check how to create a tarball. -*- Autoconf -*-
# Copyright (C) 2004-2012 Free Software Foundation, Inc. # Copyright (C) 2004-2013 Free Software Foundation, Inc.
# #
# This file is free software; the Free Software Foundation # This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved. # with or without modifications, as long as this notice is preserved.
# serial 3
# _AM_PROG_TAR(FORMAT) # _AM_PROG_TAR(FORMAT)
# -------------------- # --------------------
# Check how to create a tarball in format FORMAT. # Check how to create a tarball in format FORMAT.
@ -1466,82 +1409,121 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
# Substitute a variable $(am__untar) that extract such # Substitute a variable $(am__untar) that extract such
# a tarball read from stdin. # a tarball read from stdin.
# $(am__untar) < result.tar # $(am__untar) < result.tar
#
AC_DEFUN([_AM_PROG_TAR], AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility. Yes, it's still used [# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ... # in the wild :-( We should find a proper way to deprecate it ...
AC_SUBST([AMTAR], ['$${TAR-tar}']) AC_SUBST([AMTAR], ['$${TAR-tar}'])
m4_if([$1], [v7],
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], # We'll loop over all known methods to create a tar archive until one works.
[m4_case([$1], [ustar],, [pax],,
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
# Loop over all known methods to create a tar archive until one works.
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
# Do not fold the above two line into one, because Tru64 sh and
# Solaris sh will not grok spaces in the rhs of '-'.
for _am_tool in $_am_tools
do
case $_am_tool in
gnutar)
for _am_tar in tar gnutar gtar;
do
AM_RUN_LOG([$_am_tar --version]) && break
done
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
am__untar="$_am_tar -xf -"
;;
plaintar)
# Must skip GNU tar: if it does not support --format= it doesn't create
# ustar tarball either.
(tar --version) >/dev/null 2>&1 && continue
am__tar='tar chf - "$$tardir"'
am__tar_='tar chf - "$tardir"'
am__untar='tar xf -'
;;
pax)
am__tar='pax -L -x $1 -w "$$tardir"'
am__tar_='pax -L -x $1 -w "$tardir"'
am__untar='pax -r'
;;
cpio)
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
am__untar='cpio -i -H $1 -d'
;;
none)
am__tar=false
am__tar_=false
am__untar=false
;;
esac
# If the value was cached, stop now. We just wanted to have am__tar m4_if([$1], [v7],
# and am__untar set. [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
test -n "${am_cv_prog_tar_$1}" && break
# tar/untar a dummy directory, and stop if the command works [m4_case([$1],
[ustar],
[# The POSIX 1988 'ustar' format is defined with fixed-size fields.
# There is notably a 21 bits limit for the UID and the GID. In fact,
# the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
# and bug#13588).
am_max_uid=2097151 # 2^21 - 1
am_max_gid=$am_max_uid
# The $UID and $GID variables are not portable, so we need to resort
# to the POSIX-mandated id(1) utility. Errors in the 'id' calls
# below are definitely unexpected, so allow the users to see them
# (that is, avoid stderr redirection).
am_uid=`id -u || echo unknown`
am_gid=`id -g || echo unknown`
AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
if test $am_uid -le $am_max_uid; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
_am_tools=none
fi
AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
if test $am_gid -le $am_max_gid; then
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
_am_tools=none
fi],
[pax],
[],
[m4_fatal([Unknown tar format])])
AC_MSG_CHECKING([how to create a $1 tar archive])
# Go ahead even if we have the value already cached. We do so because we
# need to set the values for the 'am__tar' and 'am__untar' variables.
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
for _am_tool in $_am_tools; do
case $_am_tool in
gnutar)
for _am_tar in tar gnutar gtar; do
AM_RUN_LOG([$_am_tar --version]) && break
done
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
am__untar="$_am_tar -xf -"
;;
plaintar)
# Must skip GNU tar: if it does not support --format= it doesn't create
# ustar tarball either.
(tar --version) >/dev/null 2>&1 && continue
am__tar='tar chf - "$$tardir"'
am__tar_='tar chf - "$tardir"'
am__untar='tar xf -'
;;
pax)
am__tar='pax -L -x $1 -w "$$tardir"'
am__tar_='pax -L -x $1 -w "$tardir"'
am__untar='pax -r'
;;
cpio)
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
am__untar='cpio -i -H $1 -d'
;;
none)
am__tar=false
am__tar_=false
am__untar=false
;;
esac
# If the value was cached, stop now. We just wanted to have am__tar
# and am__untar set.
test -n "${am_cv_prog_tar_$1}" && break
# tar/untar a dummy directory, and stop if the command works.
rm -rf conftest.dir
mkdir conftest.dir
echo GrepMe > conftest.dir/file
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
rm -rf conftest.dir
if test -s conftest.tar; then
AM_RUN_LOG([$am__untar <conftest.tar])
AM_RUN_LOG([cat conftest.dir/file])
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
fi
done
rm -rf conftest.dir rm -rf conftest.dir
mkdir conftest.dir
echo GrepMe > conftest.dir/file
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
rm -rf conftest.dir
if test -s conftest.tar; then
AM_RUN_LOG([$am__untar <conftest.tar])
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
fi
done
rm -rf conftest.dir
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_MSG_RESULT([$am_cv_prog_tar_$1])])
AC_SUBST([am__tar]) AC_SUBST([am__tar])
AC_SUBST([am__untar]) AC_SUBST([am__untar])
]) # _AM_PROG_TAR ]) # _AM_PROG_TAR
m4_include([m4/gettext.m4]) m4_include([m4/gettext.m4])
m4_include([m4/iconv.m4]) m4_include([m4/iconv.m4])
m4_include([m4/intlmacosx.m4])
m4_include([m4/lib-ld.m4]) m4_include([m4/lib-ld.m4])
m4_include([m4/lib-link.m4]) m4_include([m4/lib-link.m4])
m4_include([m4/lib-prefix.m4]) m4_include([m4/lib-prefix.m4])
@ -1553,4 +1535,3 @@ m4_include([m4/lt~obsolete.m4])
m4_include([m4/nls.m4]) m4_include([m4/nls.m4])
m4_include([m4/po.m4]) m4_include([m4/po.m4])
m4_include([m4/progtest.m4]) m4_include([m4/progtest.m4])
m4_include([m4/python.m4])

View File

@ -2,7 +2,7 @@
# #
# anaconda: The Red Hat Linux Installation program # anaconda: The Red Hat Linux Installation program
# #
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 # Copyright (C) 1999-2013
# Red Hat, Inc. All rights reserved. # Red Hat, Inc. All rights reserved.
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
@ -28,17 +28,16 @@
# Matt Wilson <msw@rpath.com> # Matt Wilson <msw@rpath.com>
# #
# This toplevel file is a little messy at the moment... # This toplevel file is a little messy at the moment... (2001-06-22)
# ...still messy (2013-07-12)
import atexit, sys, os, re, time, subprocess
from tempfile import mkstemp
import atexit, sys, os, time, subprocess
# keep up with process ID of the window manager if we start it # keep up with process ID of the window manager if we start it
wm_pid = None wm_pid = None
def exitHandler(rebootData, storage, exitCode=None): def exitHandler(rebootData, storage, exitCode=None):
from pyanaconda import isys if flags.usevnc:
from pyanaconda.flags import flags vnc.shutdownServer()
if exitCode: if exitCode:
anaconda.intf.shutdown() anaconda.intf.shutdown()
@ -50,32 +49,41 @@ def exitHandler(rebootData, storage, exitCode=None):
while True: while True:
time.sleep(10000) time.sleep(10000)
if image_count: if image_count or flags.dirInstall:
anaconda.storage.umountFilesystems(ignoreErrors=True, swapoff=False) anaconda.storage.umountFilesystems(ignoreErrors=True, swapoff=False)
devicetree = anaconda.storage.devicetree devicetree = anaconda.storage.devicetree
devicetree.teardownAll() devicetree.teardownAll()
for name in devicetree.diskImages: for name in devicetree.diskImages:
device = devicetree.getDeviceByName(name) dev = devicetree.getDeviceByName(name)
for loop in device.parents: for loop in dev.parents:
loop.controllable = True loop.controllable = True
device.deactivate(recursive=True) dev.deactivate(recursive=True)
if not flags.imageInstall and not flags.livecdInstall: if not flags.imageInstall and not flags.livecdInstall \
from pykickstart.constants import KS_SHUTDOWN, KS_WAIT, KS_REBOOT and not flags.dirInstall:
from pykickstart.constants import KS_SHUTDOWN, KS_WAIT
from pyanaconda.iutil import dracut_eject from pyanaconda.iutil import dracut_eject
if rebootData.eject: if flags.eject or rebootData.eject:
for drive in storage.devicetree.devices: for drive in storage.devicetree.devices:
if drive.type != "cdrom": if drive.type != "cdrom":
continue continue
dracut_eject(drive.path) dracut_eject(drive.path)
if rebootData.action == KS_SHUTDOWN: if rebootData.action == KS_SHUTDOWN:
os.system("systemctl --no-wall poweroff") subprocess.Popen(["systemctl", "--no-wall", "poweroff"])
elif rebootData.action == KS_WAIT: elif rebootData.action == KS_WAIT:
os.system("systemctl --no-wall halt") subprocess.Popen(["systemctl", "--no-wall", "halt"])
else: # reboot action is KS_REBOOT or None else: # reboot action is KS_REBOOT or None
os.system("systemctl --no-wall reboot") subprocess.Popen(["systemctl", "--no-wall", "reboot"])
def startSpiceVDAgent():
status = iutil.execWithRedirect("spice-vdagent", [])
if status:
log.info("spice-vdagent exited with status %d", status)
else:
log.info("Started spice-vdagent.")
def startMetacityWM(): def startMetacityWM():
childpid = os.fork() childpid = os.fork()
@ -83,17 +91,14 @@ def startMetacityWM():
# after this point the method should never return (or throw an exception # after this point the method should never return (or throw an exception
# outside) # outside)
try: try:
args = ['--display', ':1', iutil.execWithRedirect('metacity', ["--display", ":1", "--sm-disable"])
'--sm-disable']
iutil.execWithRedirect('metacity', args,
stdout='/dev/null', stderr='/dev/null')
except BaseException as e: except BaseException as e:
# catch all possible exceptions # catch all possible exceptions
log.error("Problems running the window manager: %s" % str(e)) log.error("Problems running the window manager: %s", e)
sys.exit(1) os._exit(1)
log.info("The window manager has terminated.") log.info("The window manager has terminated.")
sys.exit(0) os._exit(0)
return childpid return childpid
def startAuditDaemon(): def startAuditDaemon():
@ -103,8 +108,8 @@ def startAuditDaemon():
try: try:
os.execl(cmd, cmd) os.execl(cmd, cmd)
except OSError as e: except OSError as e:
log.error("Error running the audit daemon: %s" % str(e)) log.error("Error running the audit daemon: %s", e)
sys.exit(0) os._exit(0)
# auditd will turn into a daemon so catch the immediate child pid now: # auditd will turn into a daemon so catch the immediate child pid now:
os.waitpid(childpid, 0) os.waitpid(childpid, 0)
@ -116,7 +121,7 @@ def doStartupX11Actions():
# now start up the window manager # now start up the window manager
wm_pid = startMetacityWM() wm_pid = startMetacityWM()
log.info("Starting window manager, pid %s." % (wm_pid,)) log.info("Starting window manager, pid %s.", wm_pid)
def set_x_resolution(runres): def set_x_resolution(runres):
# cant do this if no window manager is running because otherwise when we # cant do this if no window manager is running because otherwise when we
@ -125,17 +130,25 @@ def set_x_resolution(runres):
if runres and opts.display_mode == 'g' and not flags.usevnc and wm_pid : if runres and opts.display_mode == 'g' and not flags.usevnc and wm_pid :
try: try:
log.info("Setting the screen resolution to: %s.", runres) log.info("Setting the screen resolution to: %s.", runres)
iutil.execWithRedirect("xrandr", iutil.execWithRedirect("xrandr",
["-d", ":1", "-s", runres], ["-d", ":1", "-s", runres])
stdout="/dev/tty5", stderr="/dev/tty5") except RuntimeError:
except RuntimeError as e:
log.error("The X resolution not set") log.error("The X resolution not set")
iutil.execWithRedirect("xrandr", iutil.execWithRedirect("xrandr",
["-d", ":1", "-q"], ["-d", ":1", "-q"])
stdout="/dev/tty5", stderr="/dev/tty5")
def doExtraX11Actions(runres):
"""Perform X11 actions not related to startup"""
set_x_resolution(runres)
startSpiceVDAgent()
keyboard.background_XklWrapper_initialize()
def setupPythonUpdates(): def setupPythonUpdates():
from distutils.sysconfig import get_python_lib from distutils.sysconfig import get_python_lib
import gi.overrides
# Temporary hack for F18 alpha to symlink updates and product directories # Temporary hack for F18 alpha to symlink updates and product directories
# into tmpfs. To be removed after beta in order to directly use content # into tmpfs. To be removed after beta in order to directly use content
@ -169,13 +182,15 @@ def setupPythonUpdates():
# the updates directory. # the updates directory.
symlink_updates(dest, d) symlink_updates(dest, d)
gi.overrides.__path__.insert(0, "/run/install/updates")
import glob import glob
import shutil import shutil
for rule in glob.glob("/tmp/updates/*.rules"): for rule in glob.glob("/tmp/updates/*.rules"):
target = "/etc/udev/rules.d/" + rule.split('/')[-1] target = "/etc/udev/rules.d/" + rule.split('/')[-1]
shutil.copyfile(rule, target) shutil.copyfile(rule, target)
def symlink_updates(dest_dir, update_dir): def symlink_updates(dest_dir, update_dir):
contents = os.listdir(update_dir) contents = os.listdir(update_dir)
for f in os.listdir(dest_dir): for f in os.listdir(dest_dir):
@ -234,6 +249,7 @@ def parseOptions(argv=None, cmdline=None):
op.add_option("--multilib", dest="multiLib", action="store_true", default=False) op.add_option("--multilib", dest="multiLib", action="store_true", default=False)
op.add_option("-m", "--method", dest="method", default=None) op.add_option("-m", "--method", dest="method", default=None)
op.add_option("--askmethod", dest="askmethod", action="store_true", default=False)
op.add_option("--repo", dest="method", default=None) op.add_option("--repo", dest="method", default=None)
op.add_option("--stage2", dest="stage2", default=None) op.add_option("--stage2", dest="stage2", default=None)
op.add_option("--noverifyssl", action="store_true", default=False) op.add_option("--noverifyssl", action="store_true", default=False)
@ -244,9 +260,7 @@ def parseOptions(argv=None, cmdline=None):
op.add_option("--headless", dest="isHeadless", action="store_true", default=False) op.add_option("--headless", dest="isHeadless", action="store_true", default=False)
op.add_option("--nofb") op.add_option("--nofb")
op.add_option("--resolution", dest="runres", default=None) op.add_option("--resolution", dest="runres", default=None)
op.add_option("--serial", action="store_true", default=False)
op.add_option("--usefbx", dest="xdriver", action="store_const", const="fbdev") op.add_option("--usefbx", dest="xdriver", action="store_const", const="fbdev")
op.add_option("--virtpconsole")
op.add_option("--vnc", action="store_true", default=False) op.add_option("--vnc", action="store_true", default=False)
op.add_option("--vncconnect") op.add_option("--vncconnect")
op.add_option("--vncpassword", default="") op.add_option("--vncpassword", default="")
@ -275,28 +289,38 @@ def parseOptions(argv=None, cmdline=None):
op.add_option("--noiscsi", dest="iscsi", action="store_false", default=False) op.add_option("--noiscsi", dest="iscsi", action="store_false", default=False)
op.add_option("--iscsi", action="store_true") op.add_option("--iscsi", action="store_true")
# Geolocation
op.add_option("--geoloc")
# Miscellaneous # Miscellaneous
op.add_option("--module", action="append", default=[]) op.add_option("--module", action="append", default=[])
op.add_option("--nomount", dest="rescue_nomount", action="store_true", default=False) op.add_option("--nomount", dest="rescue_nomount", action="store_true", default=False)
op.add_option("--updates", dest="updateSrc", action="store", type="string") op.add_option("--updates", dest="updateSrc", action="store", type="string")
op.add_option("--dlabel", action="store_true", default=False) op.add_option("--dlabel", action="store_true", default=False)
op.add_option("--image", action="append", dest="images", default=[]) op.add_option("--image", action="append", dest="images", default=[])
op.add_option("--dirinstall", action="store_true", default=False)
op.add_option("--memcheck", action="store_true", default=True) op.add_option("--memcheck", action="store_true", default=True)
op.add_option("--nomemcheck", action="store_false", dest="memcheck") op.add_option("--nomemcheck", action="store_false", dest="memcheck")
op.add_option("--leavebootorder", action="store_true", default=False) op.add_option("--leavebootorder", action="store_true", default=False)
op.add_option("--noeject", action="store_false", dest="eject", default=True)
op.add_option("--extlinux", action="store_true", default=False)
op.add_option("--dnf", action="store_true", default=False)
# some defaults change based on cmdline flags # some defaults change based on cmdline flags
if cmdline is not None: if cmdline is not None:
if "console" in cmdline: if "console" in cmdline:
op.set_defaults(display_mode="t") op.set_defaults(display_mode="t")
(opts, args) = op.parse_args(argv, cmdline=cmdline) (options, extraArgs) = op.parse_args(argv, cmdline=cmdline)
return (opts, args, op.deprecated_bootargs) return (options, extraArgs, op.deprecated_bootargs)
def setupPythonPath(): def setupPythonPath():
# First add our updates path # First add our updates path
sys.path.insert(0, '/tmp/updates/') sys.path.insert(0, '/tmp/updates/')
sys.path.append('/usr/share/system-config-date')
from pyanaconda.constants import ADDON_PATHS
# append ADDON_PATHS dirs at the end
sys.path.extend(ADDON_PATHS)
def setupEnvironment(): def setupEnvironment():
# Silly GNOME stuff # Silly GNOME stuff
@ -317,34 +341,38 @@ def setupEnvironment():
if os.environ.has_key("LD_PRELOAD"): if os.environ.has_key("LD_PRELOAD"):
del os.environ["LD_PRELOAD"] del os.environ["LD_PRELOAD"]
os.environ["GLADEPATH"] = "/tmp/updates/:/tmp/updates/data/ui/:ui/:/usr/share/anaconda/ui/:/usr/share/python-meh/" def setupLoggingFromOpts(options):
os.environ["PIXMAPPATH"] = "/tmp/updates/pixmaps/:/tmp/updates/:/tmp/product/pixmaps/:/tmp/product/:pixmaps/:/usr/share/anaconda/pixmaps/:/usr/share/pixmaps/:/usr/share/anaconda/:/usr/share/python-meh/:/usr/share/icons/Fedora/48x48/apps/" if options.debug:
# debugging means debug logging
options.loglevel = "debug"
def setupLoggingFromOpts(opts): if options.loglevel and anaconda_log.logLevelMap.has_key(options.loglevel):
if opts.loglevel and anaconda_log.logLevelMap.has_key(opts.loglevel):
level = anaconda_log.logLevelMap[opts.loglevel] level = anaconda_log.logLevelMap[opts.loglevel]
anaconda_log.logger.tty_loglevel = level anaconda_log.logger.tty_loglevel = level
anaconda_log.setHandlersLevel(log, level) anaconda_log.setHandlersLevel(log, level)
packaging_log = logging.getLogger("packaging")
anaconda_log.setHandlersLevel(packaging_log, level)
storage_log = logging.getLogger("storage") storage_log = logging.getLogger("storage")
anaconda_log.setHandlersLevel(storage_log, level) anaconda_log.setHandlersLevel(storage_log, level)
if opts.syslog: if options.syslog:
anaconda_log.logger.remote_syslog = opts.syslog anaconda_log.logger.updateRemote(options.syslog)
def gtk_warning(title, reason): def gtk_warning(title, reason):
import gtk from gi.repository import Gtk
dialog = gtk.MessageDialog(type = gtk.MESSAGE_ERROR, dialog = Gtk.MessageDialog(type = Gtk.MessageType.ERROR,
buttons = gtk.BUTTONS_CLOSE, buttons = Gtk.ButtonsType.CLOSE,
message_format=reason) message_format=reason)
dialog.set_title(title) dialog.set_title(title)
dialog.run() dialog.run()
dialog.destroy() dialog.destroy()
def check_memory(anaconda, opts, display_mode=None): # pylint: disable-msg=W0621
reason_strict = _("%s requires %s MB of memory to install, but you only have " def check_memory(anaconda, options, display_mode=None):
"%s MB on this machine.\n") reason_strict = _("%(product_name)s requires %(needed_ram)s MB of memory to "
reason_graphical = _("The %s graphical installer requires %s MB of memory, but " "install, but you only have %(total_ram)s MB on this machine.\n")
"you only have %s MB.") reason_graphical = _("The %(product_name)s graphical installer requires %(needed_ram)s "
"MB of memory, but you only have %(total_ram)s MB.")
reboot_extra = _('\n' reboot_extra = _('\n'
'Press <return> to reboot your system.\n') 'Press <return> to reboot your system.\n')
@ -354,6 +382,9 @@ def check_memory(anaconda, opts, display_mode=None):
"terminal.") "terminal.")
nolivecd_extra = _(" Starting text mode.") nolivecd_extra = _(" Starting text mode.")
if options.rescue:
return
if not display_mode: if not display_mode:
display_mode = anaconda.displayMode display_mode = anaconda.displayMode
@ -362,82 +393,83 @@ def check_memory(anaconda, opts, display_mode=None):
needed_ram = int(isys.MIN_RAM / 1024) needed_ram = int(isys.MIN_RAM / 1024)
graphical_ram = needed_ram + int(isys.GUI_INSTALL_EXTRA_RAM / 1024) graphical_ram = needed_ram + int(isys.GUI_INSTALL_EXTRA_RAM / 1024)
log.info("check_memory(): total:%s, needed:%s, graphical:%s" % \ log.info("check_memory(): total:%s, needed:%s, graphical:%s",
(total_ram, needed_ram, graphical_ram)) total_ram, needed_ram, graphical_ram)
if not opts.memcheck: if not options.memcheck:
log.warning("CHECK_MEMORY DISABLED") log.warning("CHECK_MEMORY DISABLED")
return return
reason_args = {"product_name" : product.productName,
"needed_ram" : needed_ram,
"total_ram" : total_ram }
if needed_ram > total_ram: if needed_ram > total_ram:
from snack import SnackScreen, ButtonChoiceWindow from snack import SnackScreen, ButtonChoiceWindow
if opts.liveinst: if options.liveinst:
stdoutLog.warning(reason % (product.productName, needed_ram, total_ram)) stdoutLog.warning(reason, **reason_args)
gtk_warning(livecd_title, reason % (product.productName, needed_ram, total_ram)) gtk_warning(livecd_title, reason % reason_args)
else: else:
reason += reboot_extra reason += reboot_extra
screen = SnackScreen() screen = SnackScreen()
ButtonChoiceWindow(screen, _('Fatal Error'), ButtonChoiceWindow(screen, _('Fatal Error'),
reason % (product.productName, needed_ram, total_ram), reason % reason_args,
buttons = (_("OK"),)) buttons = (_("OK"),))
screen.finish() screen.finish()
sys.exit(1) sys.exit(1)
# override display mode if machine cannot nicely run X # override display mode if machine cannot nicely run X
if display_mode not in ('t', 'c', 's') and not flags.usevnc: if display_mode not in ('t', 'c', 's') and not flags.usevnc:
needed_ram = graphical_ram reason_args["needed_ram"] = graphical_ram
reason = reason_graphical reason = reason_graphical
if needed_ram > total_ram: if needed_ram > total_ram:
if opts.liveinst: if options.liveinst:
reason += livecd_extra reason += livecd_extra
stdoutLog.warning(reason % (product.productName, needed_ram, total_ram)) stdoutLog.warning(reason, **reason_args)
title = livecd_title title = livecd_title
gtk_warning(title, reason % (product.productName, needed_ram, total_ram)) gtk_warning(title, reason % reason_args)
sys.exit(1) sys.exit(1)
else: else:
reason += nolivecd_extra reason += nolivecd_extra
stdoutLog.warning(reason % (product.productName, needed_ram, total_ram)) stdoutLog.warning(reason, **reason_args)
anaconda.displayMode = 't' anaconda.displayMode = 't'
time.sleep(2) time.sleep(2)
def startDebugger(signum, frame): def startDebugger(signum, frame):
# pylint: disable-msg=F0401
import epdb import epdb
epdb.serve(skip=1) epdb.serve(skip=1)
def setupDisplay(anaconda, opts): # pylint: disable-msg=W0621
def setupDisplay(anaconda, options, addons=None):
from pyanaconda.ui.tui.simpleline import App from pyanaconda.ui.tui.simpleline import App
from pyanaconda.ui.tui.spokes.askvnc import AskVNCSpoke from pyanaconda.ui.tui.spokes.askvnc import AskVNCSpoke
from pykickstart.constants import DISPLAY_MODE_TEXT from pykickstart.constants import DISPLAY_MODE_TEXT
from pyanaconda import network from pyanaconda.nm import nm_is_connected, nm_is_connecting
from blivet import arch
graphical_failed = 0 graphical_failed = 0
vncS = vnc.VncServer() # The vnc Server object. vncS = vnc.VncServer() # The vnc Server object.
vncS.anaconda = anaconda vncS.anaconda = anaconda
anaconda.displayMode = opts.display_mode anaconda.displayMode = options.display_mode
anaconda.isHeadless = opts.isHeadless or iutil.isS390() anaconda.isHeadless = options.isHeadless or arch.isS390()
if opts.vnc: if options.vnc:
flags.usevnc = 1 flags.usevnc = 1
anaconda.displayMode = 'g' anaconda.displayMode = 'g'
vncS.password = opts.vncpassword vncS.password = options.vncpassword
# Only consider vncconnect when vnc is a param # Only consider vncconnect when vnc is a param
if opts.vncconnect: if options.vncconnect:
cargs = string.split(opts.vncconnect, ":") cargs = string.split(options.vncconnect, ":")
vncS.vncconnecthost = cargs[0] vncS.vncconnecthost = cargs[0]
if len(cargs) > 1 and len(cargs[1]) > 0: if len(cargs) > 1 and len(cargs[1]) > 0:
if len(cargs[1]) > 0: if len(cargs[1]) > 0:
vncS.vncconnectport = cargs[1] vncS.vncconnectport = cargs[1]
if opts.serial: if options.xdriver:
flags.serial = True anaconda.xdriver = options.xdriver
if opts.virtpconsole:
flags.virtpconsole = opts.virtpconsole
if opts.xdriver:
anaconda.xdriver = opts.xdriver
anaconda.writeXdriver(root="/") anaconda.writeXdriver(root="/")
if anaconda.rescue: if anaconda.rescue:
@ -457,48 +489,33 @@ def setupDisplay(anaconda, opts):
vncS.vncconnectport = anaconda.ksdata.vnc.port vncS.vncconnectport = anaconda.ksdata.vnc.port
# disable VNC over text question when not enough memory is available # disable VNC over text question when not enough memory is available
if iutil.memInstalled() < isys.MIN_GUI_RAM: if blivet.util.total_memory() < isys.MIN_GUI_RAM:
stdoutLog.warning("Not asking for VNC because current memory (%d) < MIN_GUI_RAM (%d)", blivet.util.total_memory(), isys.MIN_GUI_RAM)
flags.vncquestion = False flags.vncquestion = False
# disable VNC question if text mode is requested and this is a ks install # disable VNC question if text mode is requested and this is a ks install
if anaconda.displayMode == 't' and flags.automatedInstall: if anaconda.displayMode == 't' and flags.automatedInstall:
stdoutLog.warning("Not asking for VNC because of an automated install")
flags.vncquestion = False flags.vncquestion = False
# disable VNC question if we were explicitly asked for text in kickstart # disable VNC question if we were explicitly asked for text in kickstart
if anaconda.ksdata.displaymode.displayMode == DISPLAY_MODE_TEXT: if anaconda.ksdata.displaymode.displayMode == DISPLAY_MODE_TEXT:
stdoutLog.warning("Not asking for VNC because text mode was explicitly asked for in kickstart")
flags.vncquestion = False flags.vncquestion = False
# disable VNC question if we don't have network # disable VNC question if we don't have network
if not network.hasActiveNetDev(): if not nm_is_connecting() and not nm_is_connected():
stdoutLog.warning("Not asking for VNC because we don't have a network")
flags.vncquestion = False flags.vncquestion = False
# disable VNC question if we don't have X # disable VNC question if we don't have Xvnc
if not os.access('/usr/bin/Xvnc', os.X_OK): if not os.access('/usr/bin/Xvnc', os.X_OK):
stdoutLog.warning("Not asking for VNC because we don't have Xvnc")
flags.vncquestion = False flags.vncquestion = False
if os.environ.has_key('DISPLAY'): if os.environ.has_key('DISPLAY'):
flags.preexisting_x11 = True flags.preexisting_x11 = True
if anaconda.displayMode == 't' and flags.vncquestion:
#we prefer vnc over text mode, so ask about that
message = _("Text mode provides a limited set of installation "
"options. It does not allow you to specify your "
"own partitioning layout or package selections. "
"Would you like to use VNC mode instead?")
app = App("VNC Question")
spoke = AskVNCSpoke(app, anaconda.ksdata, message=message)
app.schedule_screen(spoke)
app.run()
if anaconda.ksdata.vnc.enabled:
anaconda.displayMode = 'g'
flags.usevnc = 1
vncS.password = anaconda.ksdata.vnc.password
log.info("Display mode = %s" % anaconda.displayMode)
check_memory(anaconda, opts)
# Should we try to start Xorg? # Should we try to start Xorg?
want_x = anaconda.displayMode == 'g' and \ want_x = anaconda.displayMode == 'g' and \
not (flags.preexisting_x11 or flags.usevnc) not (flags.preexisting_x11 or flags.usevnc)
@ -519,6 +536,26 @@ def setupDisplay(anaconda, opts):
anaconda.displayMode = 't' anaconda.displayMode = 't'
want_x = False want_x = False
if anaconda.displayMode == 't' and flags.vncquestion:
#we prefer vnc over text mode, so ask about that
message = _("Text mode provides a limited set of installation "
"options. It does not offer custom partitioning for "
"full control over the disk layout. Would you like "
"to use VNC mode instead?")
app = App("VNC Question")
spoke = AskVNCSpoke(app, anaconda.ksdata, message=message)
app.schedule_screen(spoke)
app.run()
if anaconda.ksdata.vnc.enabled:
anaconda.displayMode = 'g'
flags.usevnc = 1
vncS.password = anaconda.ksdata.vnc.password
log.info("Display mode = %s", anaconda.displayMode)
check_memory(anaconda, options)
if want_x: if want_x:
# The following code depends on no SIGCHLD being delivered, # The following code depends on no SIGCHLD being delivered,
# possibly only except the one from a failing X.org. Thus # possibly only except the one from a failing X.org. Thus
@ -541,14 +578,14 @@ def setupDisplay(anaconda, opts):
old_sigchld = signal.signal(signal.SIGCHLD, sigchld_handler) old_sigchld = signal.signal(signal.SIGCHLD, sigchld_handler)
xout = open("/dev/tty5", "w") xout = open("/dev/tty5", "w")
try: try:
proc = subprocess.Popen(["Xorg", "-br", subprocess.Popen(["Xorg", "-br",
"-logfile", "/tmp/X.log", "-logfile", "/tmp/X.log",
":1", "vt7", "-s", "1440", "-ac", ":1", "vt7", "-s", "1440", "-ac",
"-nolisten", "tcp", "-dpi", "96", "-nolisten", "tcp", "-dpi", "96",
"-noreset"], "-noreset"],
close_fds=True, close_fds=True,
stdout=xout, stderr=xout, stdout=xout, stderr=xout,
preexec_fn=preexec_fn) preexec_fn=preexec_fn)
signal.pause() signal.pause()
os.environ["DISPLAY"] = ":1" os.environ["DISPLAY"] = ":1"
@ -562,7 +599,8 @@ def setupDisplay(anaconda, opts):
signal.signal(signal.SIGUSR1, old_sigusr1) signal.signal(signal.SIGUSR1, old_sigusr1)
signal.signal(signal.SIGCHLD, old_sigchld) signal.signal(signal.SIGCHLD, old_sigchld)
set_x_resolution(opts.runres) if not graphical_failed:
doExtraX11Actions(options.runres)
if anaconda.displayMode == 't' and graphical_failed and \ if anaconda.displayMode == 't' and graphical_failed and \
flags.vncquestion and not anaconda.ksdata.vnc.enabled: flags.vncquestion and not anaconda.ksdata.vnc.enabled:
@ -582,18 +620,14 @@ def setupDisplay(anaconda, opts):
doStartupX11Actions() doStartupX11Actions()
# with X running we can initialize the UI interface # with X running we can initialize the UI interface
anaconda.initInterface() anaconda.initInterface(addons)
anaconda.instClass.configure(anaconda) anaconda.instClass.configure(anaconda)
def prompt_for_ssh(): def prompt_for_ssh():
# Do some work here to get the ip addr / hostname to pass # Do some work here to get the ip addr / hostname to pass
# to the user. # to the user.
from pyanaconda import network
from pyanaconda import isys
import socket import socket
import gettext
_ = lambda x: gettext.ldgettext("anaconda", x)
ip = network.getFirstRealIP() ip = network.getFirstRealIP()
@ -605,10 +639,9 @@ def prompt_for_ssh():
try: try:
hinfo = socket.gethostbyaddr(ipstr) hinfo = socket.gethostbyaddr(ipstr)
except Exception as e: except socket.herror as e:
stdoutLog.debug("Exception caught trying to get host name of %s: %s" % stdoutLog.debug("Exception caught trying to get host name of %s: %s", ipstr, e)
(ipstr, e)) name = network.getHostname()
name = network.getDefaultHostname(None)
else: else:
if len(hinfo) == 3: if len(hinfo) == 3:
name = hinfo[0] name = hinfo[0]
@ -624,16 +657,31 @@ def prompt_for_ssh():
connxinfo = None connxinfo = None
if connxinfo: if connxinfo:
stdoutLog.info(_("Please ssh install@%s to begin the install.") % connxinfo) stdoutLog.info(_("Please ssh install@%s to begin the install."), connxinfo)
else: else:
stdoutLog.info(_("Please ssh install@<host> to continue installation.")) stdoutLog.info(_("Please ssh install@<host> to continue installation."))
def cleanPStore():
"""remove files stored in nonvolatile ram created by the pstore subsystem"""
# files in pstore are linux (not distribution) specific, but we want to
# make sure the entirity of them are removed so as to ensure that there
# is sufficient free space on the flash part. On some machines this will
# take effect immediately, which is the best case. Unfortunately on some,
# an intervening reboot is needed."""
try:
for root, _dirs, files in os.walk("/sys/fs/pstore"):
for f in files:
os.unlink("%s/%s" % (root,f))
except OSError:
pass
if __name__ == "__main__": if __name__ == "__main__":
print "Starting installer, one moment..." print "Starting installer, one moment..."
# Allow a file to be loaded as early as possible # Allow a file to be loaded as early as possible
try: try:
# pylint: disable-msg=F0401,W0611
import updates_disk_hook import updates_disk_hook
except ImportError: except ImportError:
pass pass
@ -642,11 +690,25 @@ if __name__ == "__main__":
setupPythonUpdates() setupPythonUpdates()
setupPythonPath() setupPythonPath()
# init threading before Gtk can do anything and before we start using threads
# initThreading initializes the threadMgr instance, import it afterwards
from pyanaconda.threads import initThreading, AnacondaThread
initThreading()
from pyanaconda.threads import threadMgr
import gettext
_ = lambda x: gettext.ldgettext("anaconda", x)
from pyanaconda import constants
from pyanaconda.addons import collect_addon_paths
from pyanaconda import geoloc
# do this early so we can set flags before initializing logging # do this early so we can set flags before initializing logging
from pyanaconda.flags import flags from pyanaconda.flags import flags, can_touch_runtime_system
(opts, args, depr) = parseOptions(cmdline=flags.cmdline) (opts, args, depr) = parseOptions(cmdline=flags.cmdline)
if opts.images:
flags.imageInstall = True if opts.askmethod:
flags.askmethod = True
# Set up logging as early as possible. # Set up logging as early as possible.
import logging import logging
@ -654,6 +716,9 @@ if __name__ == "__main__":
anaconda_log.init() anaconda_log.init()
anaconda_log.logger.setupVirtio() anaconda_log.logger.setupVirtio()
from pyanaconda import network
network.setup_ifcfg_log()
log = logging.getLogger("anaconda") log = logging.getLogger("anaconda")
stdoutLog = logging.getLogger("anaconda.stdout") stdoutLog = logging.getLogger("anaconda.stdout")
@ -661,10 +726,18 @@ if __name__ == "__main__":
stdoutLog.error("anaconda must be run as root.") stdoutLog.error("anaconda must be run as root.")
sys.exit(0) sys.exit(0)
if opts.images and opts.dirinstall:
stdoutLog.error("--images and --dirinstall cannot be used at the same time")
sys.exit(0)
elif opts.images:
flags.imageInstall = True
elif opts.dirinstall:
flags.dirInstall = True
# see if we're on s390x and if we've got an ssh connection # see if we're on s390x and if we've got an ssh connection
uname = os.uname() uname = os.uname()
if uname[4] == 's390x': if uname[4] == 's390x':
if 'TMUX' not in os.environ and "RUNKS" not in flags.cmdline: if 'TMUX' not in os.environ and "RUNKS" not in flags.cmdline and not flags.imageInstall:
prompt_for_ssh() prompt_for_ssh()
sys.exit(0) sys.exit(0)
# If we get RUNKS, we default to cmdline display mode, because nothing # If we get RUNKS, we default to cmdline display mode, because nothing
@ -672,7 +745,7 @@ if __name__ == "__main__":
if "RUNKS" in flags.cmdline: if "RUNKS" in flags.cmdline:
opts.display_mode = 'c' opts.display_mode = 'c'
log.info("%s %s" % (sys.argv[0], getAnacondaVersion())) log.info("%s %s", sys.argv[0], getAnacondaVersion())
# TODO: uncomment this when we're sure that we're doing the right thing # TODO: uncomment this when we're sure that we're doing the right thing
# with flags.cmdline *everywhere* it appears... # with flags.cmdline *everywhere* it appears...
@ -682,12 +755,11 @@ if __name__ == "__main__":
# pull this in to get product name and versioning # pull this in to get product name and versioning
from pyanaconda import product from pyanaconda import product
from pyanaconda.constants import ROOT_PATH, DEFAULT_LANG
from pyanaconda import isys from pyanaconda import isys
isys.initLog() isys.initLog()
import signal, string, time import signal, string
from pyanaconda import iutil from pyanaconda import iutil
from pyanaconda import vnc from pyanaconda import vnc
@ -702,16 +774,14 @@ if __name__ == "__main__":
else: else:
print "anaconda %s (pre-release) started." % verdesc print "anaconda %s (pre-release) started." % verdesc
import gettext from pyanaconda.anaconda import Anaconda
_ = lambda x: gettext.ldgettext("anaconda", x)
from pyanaconda import Anaconda
anaconda = Anaconda() anaconda = Anaconda()
iutil.setup_translations(gettext) iutil.setup_translations(gettext)
# reset python's default SIGINT handler # reset python's default SIGINT handler
signal.signal(signal.SIGINT, signal.SIG_DFL) signal.signal(signal.SIGINT, signal.SIG_IGN)
signal.signal(signal.SIGSEGV, isys.handleSegv) signal.signal(signal.SIGSEGV, isys.handleSegv)
signal.signal(signal.SIGTERM, lambda num, frame: sys.exit(1))
setupEnvironment() setupEnvironment()
# make sure we have /var/log soon, some programs fail to start without it # make sure we have /var/log soon, some programs fail to start without it
@ -763,8 +833,7 @@ if __name__ == "__main__":
if opts.module: if opts.module:
for mod in opts.module: for mod in opts.module:
(path, name) = string.split(mod, ":") anaconda.extraModules.append(mod.split(":"))
anaconda.extraModules.append((path, name))
if opts.ibft: if opts.ibft:
flags.ibft = 1 flags.ibft = 1
@ -778,12 +847,19 @@ if __name__ == "__main__":
if opts.armPlatform: if opts.armPlatform:
flags.armPlatform = opts.armPlatform flags.armPlatform = opts.armPlatform
if opts.extlinux:
flags.extlinux = opts.extlinux
if opts.dnf:
flags.dnf = opts.dnf
# set flags # set flags
flags.dmraid = opts.dmraid flags.dmraid = opts.dmraid
flags.mpath = opts.mpath flags.mpath = opts.mpath
flags.selinux = opts.selinux flags.selinux = opts.selinux
flags.eject = opts.eject
if not flags.livecdInstall and not flags.imageInstall: if can_touch_runtime_system("start audit daemon"):
startAuditDaemon() startAuditDaemon()
# setup links required for all install types # setup links required for all install types
@ -792,7 +868,7 @@ if __name__ == "__main__":
try: try:
if os.path.exists("/mnt/runtime/etc/" + i): if os.path.exists("/mnt/runtime/etc/" + i):
os.symlink ("../mnt/runtime/etc/" + i, "/etc/" + i) os.symlink ("../mnt/runtime/etc/" + i, "/etc/" + i)
except: except OSError:
pass pass
if opts.debug: if opts.debug:
@ -801,34 +877,38 @@ if __name__ == "__main__":
if opts.rescue: if opts.rescue:
anaconda.rescue = True anaconda.rescue = True
log.info("anaconda called with cmdline = %s" %(sys.argv,)) log.info("anaconda called with cmdline = %s", sys.argv)
log.info("Default encoding = %s " % sys.getdefaultencoding()) log.info("Default encoding = %s ", sys.getdefaultencoding())
os.system("udevadm control --env=ANACONDA=1") os.system("udevadm control --env=ANACONDA=1")
# Collect all addon paths
addon_paths = collect_addon_paths(constants.ADDON_PATHS)
# If we were given a kickstart file on the command line, parse (but do not # If we were given a kickstart file on the command line, parse (but do not
# execute) that now. Otherwise, load in defaults from kickstart files # execute) that now. Otherwise, load in defaults from kickstart files
# shipped with the installation media. # shipped with the installation media.
ksdata = None ksdata = None
if opts.ksfile: if opts.ksfile:
flags.automatedInstall = True flags.automatedInstall = True
files = [opts.ksfile] flags.eject = False
ksFiles = [opts.ksfile]
else: else:
files = ["/tmp/updates/interactive-defaults.ks", ksFiles = ["/tmp/updates/interactive-defaults.ks",
"/usr/share/anaconda/interactive-defaults.ks"] "/usr/share/anaconda/interactive-defaults.ks"]
for f in files: for ks in ksFiles:
if not os.path.exists(f): if not os.path.exists(ks):
continue continue
kickstart.preScriptPass(f) kickstart.preScriptPass(ks)
ksdata = kickstart.parseKickstart(f) ksdata = kickstart.parseKickstart(ks)
# Only load the first defaults file we find. # Only load the first defaults file we find.
break break
if not ksdata: if not ksdata:
ksdata = kickstart.AnacondaKSHandler() ksdata = kickstart.AnacondaKSHandler(addon_paths["ks"])
if ksdata.rescue.rescue: if ksdata.rescue.rescue:
anaconda.rescue = True anaconda.rescue = True
@ -845,7 +925,7 @@ if __name__ == "__main__":
if not ksdata.keyboard.keyboard: if not ksdata.keyboard.keyboard:
ksdata.keyboard.keyboard = opts.keymap ksdata.keyboard.keyboard = opts.keymap
if ksdata.keyboard.keyboard: if ksdata.keyboard.keyboard and can_touch_runtime_system("activate keyboard"):
keyboard.activate_keyboard(ksdata.keyboard) keyboard.activate_keyboard(ksdata.keyboard)
# Some post-install parts of anaconda are implemented as kickstart # Some post-install parts of anaconda are implemented as kickstart
@ -853,19 +933,24 @@ if __name__ == "__main__":
kickstart.appendPostScripts(ksdata) kickstart.appendPostScripts(ksdata)
# cmdline flags override kickstart settings # cmdline flags override kickstart settings
ksdata.method.proxy = anaconda.proxy if anaconda.proxy:
ksdata.method.noverifyssl = flags.noverifyssl ksdata.method.proxy = anaconda.proxy
if flags.noverifyssl:
ksdata.method.noverifyssl = flags.noverifyssl
if opts.multiLib:
# sets yum's multilib_policy to "all" (as opposed to "best")
ksdata.packages.multiLib = opts.multiLib
# set ksdata.method based on anaconda.method if it isn't already set # set ksdata.method based on anaconda.method if it isn't already set
if anaconda.methodstr and not ksdata.method.method: if anaconda.methodstr and not ksdata.method.seen:
if anaconda.methodstr.startswith("cdrom"): if anaconda.methodstr.startswith("cdrom"):
ksdata.method.method = "cdrom" ksdata.method.method = "cdrom"
elif anaconda.methodstr.startswith("nfs"): elif anaconda.methodstr.startswith("nfs"):
ksdata.method.method = "nfs" ksdata.method.method = "nfs"
(options, server, path) = iutil.parseNfsUrl(anaconda.methodstr) (nfsOptions, server, path) = iutil.parseNfsUrl(anaconda.methodstr)
ksdata.method.server = server ksdata.method.server = server
ksdata.method.dir = path ksdata.method.dir = path
ksdata.method.opts = options ksdata.method.opts = nfsOptions
elif anaconda.methodstr.startswith("hd:"): elif anaconda.methodstr.startswith("hd:"):
ksdata.method.method = "harddrive" ksdata.method.method = "harddrive"
url = anaconda.methodstr.split(":", 1)[1] url = anaconda.methodstr.split(":", 1)[1]
@ -884,43 +969,58 @@ if __name__ == "__main__":
anaconda.methodstr.startswith("ftp"): anaconda.methodstr.startswith("ftp"):
ksdata.method.method = "url" ksdata.method.method = "url"
ksdata.method.url = anaconda.methodstr ksdata.method.url = anaconda.methodstr
# installation source specified by bootoption
# overrides source set from kickstart;
# the kickstart might have specified a mirror list,
# so we need to clear it here if plain url source is provided
# by a bootoption, because having both url & mirror list
# set at once is not supported and breaks Yum in
# unpredictable ways
ksdata.method.mirrorlist = None
elif anaconda.methodstr.startswith("livecd"): elif anaconda.methodstr.startswith("livecd"):
ksdata.method.method = "livecd" ksdata.method.method = "harddrive"
device = anaconda.methodstr.split(":", 1)[1] device = anaconda.methodstr.split(":", 1)[1]
ksdata.method.partition = os.path.normpath(device) ksdata.method.partition = os.path.normpath(device)
else: else:
log.error("Unknown method: %s", (anaconda.methodstr,)) log.error("Unknown method: %s", anaconda.methodstr)
from pyanaconda import localization
# Set the language before loading an interface, when it may be too late. # Set the language before loading an interface, when it may be too late.
if opts.lang:
from pyanaconda.localization import Language, LOCALE_PREFERENCES, expand_langs
langObj = Language(LOCALE_PREFERENCES, territory=None) # check if the LANG environmental variable is set
env_lang = os.environ.get("LANG")
if env_lang is not None:
# parse it using langtable
env_langs = localization.get_language_locales(env_lang)
# if parsed LANG is the same as our default language - ignore it;
# otherwise use it as valid language candidate
if env_langs and env_langs[0] != constants.DEFAULT_LANG:
env_lang = env_langs[0] # the first language is the best match
else:
env_lang = None
# Given something other than the long format we prefer? We need to requested_lang = opts.lang or ksdata.lang.lang or env_lang
# dig through supported translations to figure out what the user
# meant.
if not opts.lang in langObj.translations:
foundLang = False
for trans in langObj.translations.keys(): if requested_lang:
if opts.lang in expand_langs(trans): locales = localization.get_language_locales(requested_lang)
opts.lang = trans if locales:
foundLang = True localization.setup_locale(locales[0], ksdata.lang)
break ksdata.lang.seen = True
else:
log.error("Invalid locale '%s' given on command line or in kickstart", requested_lang)
else:
# no kickstart or bootoption - use default
localization.setup_locale(constants.DEFAULT_LANG, ksdata.lang)
if not foundLang: import blivet
opts.lang = "en_US.UTF-8" blivet.enable_installer_mode()
langObj.set_install_lang(opts.lang)
ksdata.lang.lang = opts.lang
# init threading before Gtk can do anything
from pyanaconda.threads import initThreading, threadMgr, AnacondaThread
initThreading()
# now start the interface # now start the interface
setupDisplay(anaconda, opts) setupDisplay(anaconda, opts, addon_paths)
if anaconda.rescue:
from pyanaconda import rescue
anaconda.intf = rescue.RescueInterface()
# Set flag to prompt for missing ks data # Set flag to prompt for missing ks data
if anaconda.displayMode == 'c': if anaconda.displayMode == 'c':
@ -931,59 +1031,87 @@ if __name__ == "__main__":
image_spec = image.rsplit(":", 1) image_spec = image.rsplit(":", 1)
path = image_spec[0] path = image_spec[0]
if len(image_spec) == 2 and image_spec[1].strip(): if len(image_spec) == 2 and image_spec[1].strip():
name = image_spec[1].strip() imageName = image_spec[1].strip()
else: else:
name = os.path.splitext(os.path.basename(path))[0] imageName = os.path.splitext(os.path.basename(path))[0]
if "/" in name or name in anaconda.storage.config.diskImages.keys(): if "/" in imageName or imageName in anaconda.storage.config.diskImages.keys():
name = "diskimg%d" % image_count imageName = "diskimg%d" % image_count
log.info("naming disk image '%s' '%s'" % (path, name)) log.info("naming disk image '%s' '%s'", path, imageName)
anaconda.storage.config.diskImages[name] = path anaconda.storage.config.diskImages[imageName] = path
image_count += 1 image_count += 1
flags.imageInstall = True flags.imageInstall = True
if image_count: if image_count:
anaconda.storage.setupDiskImages() anaconda.storage.setupDiskImages()
anaconda.simpleFilter = True
# sets yum's multilib_policy to "all" (as opposed to "best")
ksdata.packages.multiLib = opts.multiLib
from pyanaconda import exception from pyanaconda import exception
if anaconda.displayMode == 'g': # comment out the next line to make exceptions non-fatal
# comment out the next line to make exceptions non-fatal anaconda.mehConfig = exception.initExceptionHandling(anaconda)
anaconda.mehConfig = exception.initExceptionHandling(anaconda)
# add our own additional signal handlers # add our own additional signal handlers
signal.signal(signal.SIGUSR1, lambda signum, frame: signal.signal(signal.SIGUSR1, lambda signum, frame:
exception.test_exception_handling()) exception.test_exception_handling())
signal.signal(signal.SIGUSR2, lambda signum, frame: anaconda.dumpState()) signal.signal(signal.SIGUSR2, lambda signum, frame: anaconda.dumpState())
if opts.lang: from blivet import storageInitialize
# this is lame, but make things match what we expect (#443408)
opts.lang = opts.lang.replace(".utf8", ".UTF-8")
from pyanaconda.storage import storageInitialize
from pyanaconda.packaging import payloadInitialize from pyanaconda.packaging import payloadInitialize
from pyanaconda.network import networkInitialize from pyanaconda.network import networkInitialize, wait_for_connecting_NM_thread
from pyanaconda.timezone import time_initialize
if anaconda.rescue: if anaconda.rescue:
from pyanaconda.rescue import doRescue rescue.doRescue(anaconda.intf, anaconda.rescue_mount, ksdata)
doRescue(anaconda.rescue_mount, ksdata, anaconda.platform) else:
cleanPStore()
threadMgr.add(AnacondaThread(name="AnaStorageThread", target=storageInitialize, args=(anaconda.storage, ksdata, anaconda.protected))) networkInitialize(ksdata)
threadMgr.add(AnacondaThread(name="AnaNetworkThread", target=networkInitialize, args=(ksdata,))) if not flags.dirInstall:
threadMgr.add(AnacondaThread(name="AnaPayloadThread", target=payloadInitialize, args=(anaconda.storage, ksdata, anaconda.payload))) threadMgr.add(AnacondaThread(name=constants.THREAD_STORAGE, target=storageInitialize,
args=(anaconda.storage, ksdata, anaconda.protected)))
threadMgr.add(AnacondaThread(name=constants.THREAD_TIME_INIT, target=time_initialize,
args=(ksdata.timezone, anaconda.storage, anaconda.bootloader)))
threadMgr.add(AnacondaThread(name=constants.THREAD_WAIT_FOR_CONNECTING_NM, target=wait_for_connecting_NM_thread, args=(ksdata,)))
threadMgr.add(AnacondaThread(name=constants.THREAD_PAYLOAD, target=payloadInitialize, args=(anaconda.storage, ksdata, anaconda.payload)))
atexit.register(exitHandler, ksdata.reboot, anaconda.storage) atexit.register(exitHandler, ksdata.reboot, anaconda.storage)
# setup ntp servers and start NTP daemon if not requested otherwise # check if geolocation should be enabled for this type of installation
if (not flags.imageInstall) and anaconda.ksdata.timezone.ntpservers: use_geolocation = True
ntp.save_servers_to_config(anaconda.ksdata.timezone.ntpservers) if flags.imageInstall or flags.dirInstall:
use_geolocation = False
# and also check if it was not disabled by boot option
else:
# flags.cmdline.getbool is used as it handles values such as
# 0, no, off and also nogeoloc as False
# and other values or geoloc not being present as True
use_geolocation = flags.cmdline.getbool('geoloc', True)
if not anaconda.ksdata.timezone.nontp:
iutil.start_service("chronyd") if use_geolocation:
provider_id = constants.GEOLOC_DEFAULT_PROVIDER
# check if a provider was specified by an option
if opts.geoloc is not None:
parsed_id = geoloc.get_provider_id_from_option(opts.geoloc)
if parsed_id is None:
log.error('geoloc: wrong provider id specified: %s', opts.geoloc)
else:
provider_id = parsed_id
# instantiate the geolocation module and start location data refresh
geoloc.init_geolocation(provider_id=provider_id)
geoloc.refresh()
# setup ntp servers and start NTP daemon if not requested otherwise
if can_touch_runtime_system("start chronyd"):
if anaconda.ksdata.timezone.ntpservers:
ntp.save_servers_to_config(anaconda.ksdata.timezone.ntpservers)
if not anaconda.ksdata.timezone.nontp:
iutil.start_service("chronyd")
# try to load firmware language
localization.load_firmware_language(ksdata.lang)
# FIXME: This will need to be made cleaner once this file starts to take # FIXME: This will need to be made cleaner once this file starts to take
# shape with the new UI code. # shape with the new UI code.

File diff suppressed because it is too large Load Diff

10
anaconda/autogen.sh Executable file
View File

@ -0,0 +1,10 @@
#!/bin/bash -e
[ -d m4 ] || mkdir m4
autopoint --force
libtoolize --copy --force
aclocal -I m4
autoconf
autoheader --force
automake --foreign --add-missing --copy
rm -rf autom4te.cache
( cd widgets && ./autogen.sh )

View File

@ -91,9 +91,6 @@
/* Define to 1 if you have the <libintl.h> header file. */ /* Define to 1 if you have the <libintl.h> header file. */
#undef HAVE_LIBINTL_H #undef HAVE_LIBINTL_H
/* Define to 1 if you have the `selinux' library (-lselinux). */
#undef HAVE_LIBSELINUX
/* Define to 1 if you have the <limits.h> header file. */ /* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H #undef HAVE_LIMITS_H
@ -346,6 +343,10 @@
such a type exists and the standard includes do not define it. */ such a type exists and the standard includes do not define it. */
#undef int32_t #undef int32_t
/* Define to the type of a signed integer type of width exactly 64 bits if
such a type exists and the standard includes do not define it. */
#undef int64_t
/* Define to rpl_malloc if the replacement function should be used. */ /* Define to rpl_malloc if the replacement function should be used. */
#undef malloc #undef malloc

34
anaconda/config.rpath Normal file → Executable file
View File

@ -2,7 +2,7 @@
# Output a system dependent set of variables, describing how to set the # Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable. # run time search path of shared libraries in an executable.
# #
# Copyright 1996-2007 Free Software Foundation, Inc. # Copyright 1996-2010 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001 # Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
# #
@ -47,7 +47,7 @@ for cc_temp in $CC""; do
done done
cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC. # Code taken from libtool.m4's _LT_COMPILER_PIC.
wl= wl=
if test "$GCC" = yes; then if test "$GCC" = yes; then
@ -64,7 +64,7 @@ else
;; ;;
esac esac
;; ;;
mingw* | cygwin* | pw32* | os2*) mingw* | cygwin* | pw32* | os2* | cegcc*)
;; ;;
hpux9* | hpux10* | hpux11*) hpux9* | hpux10* | hpux11*)
wl='-Wl,' wl='-Wl,'
@ -76,7 +76,13 @@ else
;; ;;
linux* | k*bsd*-gnu) linux* | k*bsd*-gnu)
case $cc_basename in case $cc_basename in
icc* | ecc*) ecc*)
wl='-Wl,'
;;
icc* | ifort*)
wl='-Wl,'
;;
lf95*)
wl='-Wl,' wl='-Wl,'
;; ;;
pgcc | pgf77 | pgf90) pgcc | pgf77 | pgf90)
@ -124,7 +130,7 @@ else
esac esac
fi fi
# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS. # Code taken from libtool.m4's _LT_LINKER_SHLIBS.
hardcode_libdir_flag_spec= hardcode_libdir_flag_spec=
hardcode_libdir_separator= hardcode_libdir_separator=
@ -132,7 +138,7 @@ hardcode_direct=no
hardcode_minus_L=no hardcode_minus_L=no
case "$host_os" in case "$host_os" in
cygwin* | mingw* | pw32*) cygwin* | mingw* | pw32* | cegcc*)
# FIXME: the MSVC++ port hasn't been tested in a loooong time # FIXME: the MSVC++ port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using # When not using gcc, we currently assume that we are using
# Microsoft Visual C++. # Microsoft Visual C++.
@ -158,7 +164,7 @@ if test "$with_gnu_ld" = yes; then
# option of GNU ld is called -rpath, not --rpath. # option of GNU ld is called -rpath, not --rpath.
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
case "$host_os" in case "$host_os" in
aix3* | aix4* | aix5*) aix[3-9]*)
# On AIX/PPC, the GNU linker is very broken # On AIX/PPC, the GNU linker is very broken
if test "$host_cpu" != ia64; then if test "$host_cpu" != ia64; then
ld_shlibs=no ld_shlibs=no
@ -182,7 +188,7 @@ if test "$with_gnu_ld" = yes; then
ld_shlibs=no ld_shlibs=no
fi fi
;; ;;
cygwin* | mingw* | pw32*) cygwin* | mingw* | pw32* | cegcc*)
# hardcode_libdir_flag_spec is actually meaningless, as there is # hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs. # no search path for DLLs.
hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_flag_spec='-L$libdir'
@ -254,7 +260,7 @@ else
hardcode_direct=unsupported hardcode_direct=unsupported
fi fi
;; ;;
aix4* | aix5*) aix[4-9]*)
if test "$host_cpu" = ia64; then if test "$host_cpu" = ia64; then
# On IA64, the linker does run time linking by default, so we don't # On IA64, the linker does run time linking by default, so we don't
# have to do anything special. # have to do anything special.
@ -264,7 +270,7 @@ else
# Test if we are trying to use run time linking or normal # Test if we are trying to use run time linking or normal
# AIX style linking. If -brtl is somewhere in LDFLAGS, we # AIX style linking. If -brtl is somewhere in LDFLAGS, we
# need to do runtime linking. # need to do runtime linking.
case $host_os in aix4.[23]|aix4.[23].*|aix5*) case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
for ld_flag in $LDFLAGS; do for ld_flag in $LDFLAGS; do
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
aix_use_runtimelinking=yes aix_use_runtimelinking=yes
@ -326,7 +332,7 @@ else
;; ;;
bsdi[45]*) bsdi[45]*)
;; ;;
cygwin* | mingw* | pw32*) cygwin* | mingw* | pw32* | cegcc*)
# When not using gcc, we currently assume that we are using # When not using gcc, we currently assume that we are using
# Microsoft Visual C++. # Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is # hardcode_libdir_flag_spec is actually meaningless, as there is
@ -494,7 +500,7 @@ else
fi fi
# Check dynamic linker characteristics # Check dynamic linker characteristics
# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER. # Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
# Unlike libtool.m4, here we don't care about _all_ names of the library, but # Unlike libtool.m4, here we don't care about _all_ names of the library, but
# only about the one the linker finds when passed -lNAME. This is the last # only about the one the linker finds when passed -lNAME. This is the last
# element of library_names_spec in libtool.m4, or possibly two of them if the # element of library_names_spec in libtool.m4, or possibly two of them if the
@ -505,7 +511,7 @@ case "$host_os" in
aix3*) aix3*)
library_names_spec='$libname.a' library_names_spec='$libname.a'
;; ;;
aix4* | aix5*) aix[4-9]*)
library_names_spec='$libname$shrext' library_names_spec='$libname$shrext'
;; ;;
amigaos*) amigaos*)
@ -517,7 +523,7 @@ case "$host_os" in
bsdi[45]*) bsdi[45]*)
library_names_spec='$libname$shrext' library_names_spec='$libname$shrext'
;; ;;
cygwin* | mingw* | pw32*) cygwin* | mingw* | pw32* | cegcc*)
shrext=.dll shrext=.dll
library_names_spec='$libname.dll.a $libname.lib' library_names_spec='$libname.dll.a $libname.lib'
;; ;;

1478
anaconda/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -20,8 +20,8 @@
m4_define(python_required_version, 2.5) m4_define(python_required_version, 2.5)
AC_PREREQ([2.63]) AC_PREREQ([2.63])
AC_INIT([anaconda], [18.37.11], [anaconda-devel-list@redhat.com]) AC_INIT([anaconda], [20.25.16], [anaconda-devel-list@redhat.com])
AM_INIT_AUTOMAKE([foreign no-dist-gzip dist-bzip2]) AM_INIT_AUTOMAKE([foreign no-dist-gzip dist-bzip2 tar-ustar])
AC_CONFIG_HEADERS([config.h]) AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_MACRO_DIR([m4])
@ -38,7 +38,33 @@ AC_PROG_LN_S
AC_PROG_MAKE_SET AC_PROG_MAKE_SET
AC_PROG_LIBTOOL 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([external])
AM_GNU_GETTEXT_VERSION([0.18.1])
# Checks for libraries. # Checks for libraries.
AC_CHECK_LIB([X11], [XGetWindowAttributes], AC_CHECK_LIB([X11], [XGetWindowAttributes],
@ -49,18 +75,6 @@ AC_CHECK_LIB([audit], [audit_open],
[AC_SUBST(AUDIT_LIBS, [-laudit])], [AC_SUBST(AUDIT_LIBS, [-laudit])],
[AC_MSG_FAILURE([*** libaudit not usable.])]) [AC_MSG_FAILURE([*** libaudit not usable.])])
AC_CHECK_LIB([blkid], [blkid_get_cache],
[AC_SUBST(BLKID_LIBS, [-lblkid])],
[AC_MSG_FAILURE([*** libblkid not usable.])])
AC_CHECK_LIB([ext2fs], [ext2fs_initialize],
[AC_SUBST(EXT2FS_LIBS, [-lext2fs])],
[AC_MSG_FAILURE([*** libext2fs not usable.])])
AC_CHECK_LIB([iscsi], [libiscsi_get_firmware_network_config],
[AC_SUBST(ISCSI_LIBS, [-liscsi])],
[AC_MSG_FAILURE([*** libiscsi not usable.])])
AC_CHECK_LIB([z], [zlibVersion], AC_CHECK_LIB([z], [zlibVersion],
[AC_SUBST(ZLIB_LIBS, [-lz])], [AC_SUBST(ZLIB_LIBS, [-lz])],
[AC_MSG_FAILURE([*** libz not usable.])]) [AC_MSG_FAILURE([*** libz not usable.])])
@ -93,6 +107,7 @@ AC_TYPE_UINT16_T
AC_TYPE_UINT32_T AC_TYPE_UINT32_T
AC_TYPE_UINT64_T AC_TYPE_UINT64_T
AC_TYPE_UINT8_T AC_TYPE_UINT8_T
AC_TYPE_INT64_T
# Checks for library functions. # Checks for library functions.
AC_FUNC_CHOWN AC_FUNC_CHOWN
@ -111,7 +126,19 @@ AC_CHECK_FUNCS([dup2 fdatasync ftruncate getcwd gethostbyname gettimeofday \
[AC_MSG_FAILURE([*** Required function $ac_func not found.])]) [AC_MSG_FAILURE([*** Required function $ac_func not found.])])
AM_PATH_PYTHON(python_required_version) AM_PATH_PYTHON(python_required_version)
AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers or library)])
# Check for the python extension paths
PKG_CHECK_MODULES([PYTHON], [python], [
LIBS_save="$LIBS"
LIBS="$LIBS $PYTHON_LIBS"
AC_MSG_CHECKING([Python libraries])
AC_TRY_LINK_FUNC([Py_Initialize],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_FAILURE([*** Unable to use python library])])
LIBS="$LIBS_save"
],
[AC_MSG_FAILURE([*** Unable to find python library])])
# Check for libraries we need that provide pkg-config scripts # Check for libraries we need that provide pkg-config scripts
PKG_PROG_PKG_CONFIG([0.23]) PKG_PROG_PKG_CONFIG([0.23])
@ -123,10 +150,8 @@ PKG_CHECK_MODULES([GDK], [gdk-3.0])
PKG_CHECK_MODULES([NETWORKMANAGER], [NetworkManager >= 0.7.1]) PKG_CHECK_MODULES([NETWORKMANAGER], [NetworkManager >= 0.7.1])
PKG_CHECK_MODULES([LIBNL], [libnl-1 >= 1.0]) PKG_CHECK_MODULES([LIBNL], [libnl-1 >= 1.0])
PKG_CHECK_MODULES([LIBNM_GLIB], [libnm-glib >= 0.7.1 libnm-util >= 0.7.1]) PKG_CHECK_MODULES([LIBNM_GLIB], [libnm-glib >= 0.7.1 libnm-util >= 0.7.1])
PKG_CHECK_MODULES([DEVMAPPER], [devmapper >= 1.02.17]) PKG_CHECK_MODULES([RPM], [rpm >= 4.10.0])
PKG_CHECK_MODULES([LIBCURL], [libcurl >= 7.19.5]) PKG_CHECK_MODULES([LIBARCHIVE], [libarchive >= 3.0.4])
PKG_CHECK_MODULES([RPM], [rpm >= 4.8.0])
PKG_CHECK_MODULES([LIBARCHIVE], [libarchive >= 2.7.902a])
# Set $RPM_OPT_FLAGS if we don't have it # Set $RPM_OPT_FLAGS if we don't have it
if test -z $RPM_OPT_FLAGS ; then if test -z $RPM_OPT_FLAGS ; then
@ -135,32 +160,12 @@ else
CFLAGS="$CFLAGS $RPM_OPT_FLAGS" CFLAGS="$CFLAGS $RPM_OPT_FLAGS"
fi fi
# SELinux support can be enabled or disabled
AC_ARG_ENABLE(selinux,
AC_HELP_STRING([--enable-selinux],
[enable SELinux support (default is yes)]),
[selinux=$enableval],
[selinux=yes])
if test x$selinux = xyes ; then
AC_CHECK_LIB([selinux], [matchpathcon], [],
[AC_MSG_FAILURE([*** libselinux not usable.])])
AC_CHECK_LIB([selinux], [lsetfilecon], [],
[AC_MSG_FAILURE([*** libselinux not usable.])])
selinux_libs="-lselinux -laudit"
AC_SUBST(SELINUX_CFLAGS, [-DUSESELINUX=1])
AC_SUBST(SELINUX_LIBS, [$selinux_libs])
fi
# NFS support can, in theory, be enabled or disabled # NFS support can, in theory, be enabled or disabled
AC_ARG_ENABLE(nfs, AC_ARG_ENABLE(nfs,
AC_HELP_STRING([--enable-nfs], AC_HELP_STRING([--enable-nfs],
[enable NFS support (default is yes)]), [enable NFS support (default is yes)]),
[nfs=$enableval], [nfs=$enableval],
[nfs=yes]) [nfs=yes])
if test x$selinux = xyes ; then
AC_SUBST(NFS_CFLAGS, [-DHAVE_NFS])
fi
# IPv6 support can be enabled or disabled # IPv6 support can be enabled or disabled
AC_ARG_ENABLE(ipv6, AC_ARG_ENABLE(ipv6,
@ -203,36 +208,15 @@ CFLAGS="`cflags_filter $CFLAGS`"
LIBS= LIBS=
# Get the release number from the spec file # 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`"
AC_SUBST(PACKAGE_RELEASE, [$rel]) AC_SUBST(PACKAGE_RELEASE, [$rel])
# Set $(ARCH) and arch-related tests # Perform arch related tests
s_arch="`uname -m | sed -e s/i.86/i386/ -e s/sparc.*/sparc/ -e s/ppc.*/ppc/`" AC_CANONICAL_BUILD
AC_SUBST(ARCH, [$s_arch]) s_arch="`echo $build_cpu | sed -e s/i.86/i386/ -e s/powerpc.*/ppc/`"
AM_CONDITIONAL(IS_LIVEINST_ARCH, AM_CONDITIONAL(IS_LIVEINST_ARCH,
[test x$s_arch == xppc || test x$s_arch == xi386 || test x$s_arch == xx86_64]) [test x$s_arch = xppc || test x$s_arch = xi386 || test x$s_arch = xx86_64])
AM_CONDITIONAL(IS_GPTSYNC_ARCH,
[test x$s_arch == xi386 || test x$s_arch == xx86_64])
AM_CONDITIONAL(IS_KEYMAPS_OVERRIDE_ARCH,
[test x$s_arch == xi386 || test x$s_arch == xppc || test x$s_arch == xx86_64])
AM_CONDITIONAL(IS_I386,
[test x$s_arch == xi386])
AM_CONDITIONAL(IS_PPC,
[test x$s_arch == xppc])
AM_CONDITIONAL(IS_S390,
[test x$s_arch == xs390 || test x$s_arch == xs390x])
AM_CONDITIONAL(IS_X86_64,
[test x$s_arch == xx86_64])
AM_CONDITIONAL(IS_SPARC,
[test x$s_arch == xsparc || test x$s_arch == xsparc64])
AC_CONFIG_SUBDIRS([widgets]) AC_CONFIG_SUBDIRS([widgets])
@ -267,14 +251,12 @@ AC_CONFIG_FILES([Makefile
pyanaconda/Makefile pyanaconda/Makefile
pyanaconda/isys/Makefile pyanaconda/isys/Makefile
pyanaconda/packaging/Makefile pyanaconda/packaging/Makefile
pyanaconda/storage/Makefile
pyanaconda/storage/devicelibs/Makefile
pyanaconda/storage/formats/Makefile
pyanaconda/ui/Makefile pyanaconda/ui/Makefile
pyanaconda/ui/lib/Makefile pyanaconda/ui/lib/Makefile
pyanaconda/ui/gui/categories/Makefile pyanaconda/ui/gui/categories/Makefile
pyanaconda/ui/gui/hubs/Makefile pyanaconda/ui/gui/hubs/Makefile
pyanaconda/ui/gui/spokes/Makefile pyanaconda/ui/gui/spokes/Makefile
pyanaconda/ui/gui/spokes/advstorage/Makefile
pyanaconda/ui/gui/spokes/lib/Makefile pyanaconda/ui/gui/spokes/lib/Makefile
pyanaconda/ui/gui/tools/Makefile pyanaconda/ui/gui/tools/Makefile
pyanaconda/ui/gui/Makefile pyanaconda/ui/gui/Makefile
@ -283,21 +265,8 @@ AC_CONFIG_FILES([Makefile
pyanaconda/ui/tui/spokes/Makefile pyanaconda/ui/tui/spokes/Makefile
pyanaconda/ui/tui/tools/Makefile pyanaconda/ui/tui/tools/Makefile
pyanaconda/ui/tui/Makefile pyanaconda/ui/tui/Makefile
tests/Makefile
tests/mock/Makefile
tests/kickstart_test/Makefile
tests/storage_test/Makefile
tests/storage_test/devicelibs_test/Makefile
tests/pylint/Makefile
tests/regex/Makefile
tests/pyanaconda_test/Makefile
tests/logpicker_test/Makefile
tests/logpicker_test/sending_test/Makefile
tests/logpicker_test/archiving_test/Makefile
tests/logpicker_test/logmining_test/Makefile
pyanaconda/textw/Makefile
data/post-scripts/Makefile data/post-scripts/Makefile
tests/Makefile
utils/Makefile utils/Makefile
utils/log_picker/Makefile utils/dd/Makefile])
utils/log_picker/sending/Makefile])
AC_OUTPUT AC_OUTPUT

View File

@ -1,29 +0,0 @@
# If $ANACONDA isn't set in the environment, skip all these rules.
ENV{ANACONDA}!="?*", GOTO="anaconda_end"
ACTION!="add|change", GOTO="anaconda_end"
SUBSYSTEM!="block", GOTO="anaconda_end"
# for device-mapper device we are supposed to only operate on "change" events
KERNEL=="dm-*", ACTION=="add", GOTO="anaconda_end"
ENV{ANACBIN}="/sbin"
TEST!="$env{ANACBIN}/dmsetup", ENV{ANACBIN}="/usr/sbin"
KERNEL=="dm-*", ENV{DM_UDEV_DISABLE_DISK_RULES_FLAG}=="1", GOTO="anaconda_end"
KERNEL=="dm-*", ENV{DM_NAME}!="?*", GOTO="anaconda_end"
KERNEL=="dm-*", ENV{DM_SUSPENDED}=="1", GOTO="anaconda_end"
KERNEL=="dm-*", ENV{DM_SUSPENDED}=="Suspended", GOTO="anaconda_end"
# probe raid metadata of mdraid member devices
ENV{ID_FS_TYPE}=="linux_raid_member", IMPORT{program}="$env{ANACBIN}/mdadm --examine --export $tempnode"
ENV{ID_FS_TYPE}=="isw_raid_member", IMPORT{program}="$env{ANACBIN}/mdadm --examine --export $tempnode"
# probe metadata of LVM2 physical volumes
ENV{ID_FS_TYPE}=="LVM2_member", IMPORT{program}="$env{ANACBIN}/lvm pvs --config 'global {locking_type=4}' --units k --nosuffix --nameprefixes --rows --unquoted --noheadings -opv_name,pv_uuid,pv_size,pv_pe_count,pv_pe_alloc_count,pe_start,vg_name,vg_uuid,vg_size,vg_free,vg_extent_size,vg_extent_count,vg_free_count,pv_count $tempnode"
ENV{ID_FS_TYPE}=="LVM2_member", IMPORT{program}="$env{ANACBIN}/lvm pvs --config 'global {locking_type=4}' --units k --nosuffix --nameprefixes --rows --unquoted --noheadings -olv_name,lv_uuid,lv_size,lv_attr $tempnode"
ENV{ID_FS_TYPE}=="btrfs", PROGRAM="$env{ANACBIN}/btrfs device scan $tempnode"
LABEL="anaconda_end"

View File

@ -21,13 +21,8 @@ SUBDIRS = command-stubs icons liveinst pixmaps systemd post-scripts
CLEANFILES = *~ CLEANFILES = *~
ksdir = $(datadir)/$(PACKAGE_NAME) dist_pkgdata_DATA = interactive-defaults.ks \
dist_ks_DATA = interactive-defaults.ks tmux.conf \
anaconda-gtk.css
udevdir = $(prefix)/lib/udev/rules.d
dist_udev_DATA = 70-anaconda.rules
tmuxdir = $(datadir)/$(PACKAGE_NAME)
dist_tmux_DATA = tmux.conf
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in

View File

@ -0,0 +1,111 @@
/* Anaconda gtk style overrides */
/* Define styles to apply to the GtkLevelBar widgets for different values.
*
* This stylesheet defines properties for "low", "medium" and "high" level bar
* levels. The level bars themselves need to define what style applies at what
* value using gtk_level_bar_add_offset_value. Gtk defines "low" and "high" by
* default, but it defines them for level bars using a continuous value between
* 0 and 1, so our discrete level bars are effectively always at the "high"
* level.
*
* Fun surprises that might change in future versions:
*
* - Defining properties for a level will set properties on both the filled
* portion and the empty portion of the level bar. So if all of the display
* properties are set, which we do, the level bar effectively becomes 100%
* filled with whatever properties are set. Copying the .empty-fill-block
* properties from the theme so that they apply at the application level
* works around this.
*
* - There's a bug in the handling of the maximum offset in that it only
* applies when value == max-value, rather than when it's between
* max-value and the next lower offset. For example, consider a
* discrete-mode level bar with a max-value of 4 and offsets defined as
* "low": 2.0, "medium": 3.0 and "high": 4.0. Value 1 will be low,
* value 2 will be medium, value 3 will be in an undefined no-man's land,
* and value 4 will be high. To get around this we re-define the default
* fill-block values as the same as fill-block.level-high.
*
* - The GNOME Adwaita theme applies a gradient to the progress bar when the
* window is focused. It does this by redefining the colors in a
* background-image property, so unless we reset background-image our colors
* will only apply when the window is out of focus, which uses the :backdrop
* selector.
*/
@define-color anaconda_level_bar_low red;
@define-color anaconda_level_bar_medium orange;
@define-color anaconda_level_bar_high green;
.level-bar.fill-block.level-low {
border-color: darker(@anaconda_level_bar_low);
background-color: @anaconda_level_bar_low;
background-image: none;
}
.level-bar.fill-block.level-medium {
border-color: darker(@anaconda_level_bar_medium);
background-color: @anaconda_level_bar_medium;
background-image: none;
}
.level-bar.fill-block,
.level-bar.fill-block.level-high {
border-color: darker(@anaconda_level_bar_high);
background-color: @anaconda_level_bar_high;
background-image: none;
}
.level-bar.fill-block.empty-fill-block {
background-color: transparent;
background-image: none;
border-color: alpha(#000000, 0.1);
}
/* As of gnome-themes-standard 3.9.90, the Adwaita theme uses the same color
* for all GtkInfoBars regardless of the MessageType.
* (https://bugzilla.gnome.org/show_bug.cgi?id=704266, commit 6bfa3aa0). The
* colors were actually kind of ok, and also the new colors are borderline
* unreadable, so these rules revert that change and set different colors.
*/
@define-color info_fg_color black;
@define-color info_bg_color rgb (252, 252, 189);
@define-color warning_fg_color black;
@define-color warning_bg_color rgb (250, 173, 61);
@define-color question_fg_color white;
@define-color question_bg_color rgb (138, 173, 212);
@define-color error_fg_color white;
@define-color error_bg_color rgb (237, 54, 54);
.info {
background-color: @info_bg_color;
color: @info_fg_color;
border-color: darker(@info_bg_color);
}
.warning {
background-color: @warning_bg_color;
color: @warning_fg_color;
border-color: darker(@warning_bg_color);
}
.question {
background-color: @question_bg_color;
color: @question_fg_color;
border-color: darker(@question_bg_color);
}
.error {
background-color: @error_bg_color;
color: @error_fg_color;
border-color: darker(@error_bg_color);
}
.info,
.warning,
.question,
.error {
text-shadow: none;
}

View File

@ -18,6 +18,6 @@
# Author: David Cantrell <dcantrell@redhat.com> # Author: David Cantrell <dcantrell@redhat.com>
commandstubsdir = $(datadir)/$(PACKAGE_NAME) commandstubsdir = $(datadir)/$(PACKAGE_NAME)
dist_commandstubs_SCRIPTS = *-stub dist_commandstubs_SCRIPTS = $(srcdir)/*-stub
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in

View File

@ -1,5 +1,4 @@
# Kickstart defaults file for an interative install. # Kickstart defaults file for an interative install.
# This is not loaded if a kickstart file is provided on the command line. # This is not loaded if a kickstart file is provided on the command line.
auth --enableshadow --passalgo=sha512 auth --enableshadow --passalgo=sha512
bootloader --location=mbr
firstboot --enable firstboot --enable

View File

@ -35,12 +35,7 @@ CLEANFILES = liveinst.desktop *.h
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in
intltool_merge_verbose = $(intltool_merge_verbose_$(V)) @INTLTOOL_DESKTOP_RULE@
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
install-exec-local: install-exec-local:
mkdir -p $(DESTDIR)$(bindir) mkdir -p $(DESTDIR)$(bindir)

View File

@ -27,9 +27,4 @@ CLEANFILES = fedora-welcome.desktop
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in
intltool_merge_verbose = $(intltool_merge_verbose_$(V)) @INTLTOOL_DESKTOP_RULE@
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

View File

@ -18,10 +18,6 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
if [ -n "$DISPLAY" -a -n "$LANG" ]; then
INSTLANG="--lang $LANG"
fi
LIVE_INSTALL=0 LIVE_INSTALL=0
IMAGE_INSTALL=0 IMAGE_INSTALL=0
RESCUE=0 RESCUE=0
@ -43,7 +39,9 @@ fi
# Try to sort out where the live device is # Try to sort out where the live device is
if [ -z "$LIVE_BLOCK" ]; then if [ -z "$LIVE_BLOCK" ]; then
if [ -b "/dev/mapper/live-osimg-min" ]; then if [ -b "/dev/mapper/live-base" ]; then
LIVE_BLOCK="/dev/mapper/live-base"
elif [ -b "/dev/mapper/live-osimg-min" ]; then
LIVE_BLOCK="/dev/mapper/live-osimg-min" LIVE_BLOCK="/dev/mapper/live-osimg-min"
fi fi
fi fi
@ -56,7 +54,7 @@ fi
# Allow running another command in the place of anaconda, but in this same # Allow running another command in the place of anaconda, but in this same
# environment. This allows storage testing to make use of all the module # environment. This allows storage testing to make use of all the module
# loading and lvm control in this file, too. # loading and lvm control in this file, too.
ANACONDA=${LIVECMD:=anaconda --liveinst --method=livecd://$LIVE_BLOCK $INSTLANG} ANACONDA=${LIVECMD:=anaconda --liveinst --method=livecd://$LIVE_BLOCK}
# load modules that would get loaded by the initramfs (#230945) # load modules that would get loaded by the initramfs (#230945)
for i in raid0 raid1 raid5 raid6 raid456 raid10 dm-mod dm-zero dm-mirror dm-snapshot dm-multipath dm-round-robin vfat dm-crypt cbc sha256 lrw xts iscsi_tcp iscsi_ibft; do /sbin/modprobe $i 2>/dev/null ; done for i in raid0 raid1 raid5 raid6 raid456 raid10 dm-mod dm-zero dm-mirror dm-snapshot dm-multipath dm-round-robin vfat dm-crypt cbc sha256 lrw xts iscsi_tcp iscsi_ibft; do /sbin/modprobe $i 2>/dev/null ; done
@ -111,8 +109,6 @@ done
# unmount anything that shouldn't be mounted prior to install # unmount anything that shouldn't be mounted prior to install
anaconda-cleanup $ANACONDA $* anaconda-cleanup $ANACONDA $*
/sbin/udevadm control --env=ANACONDA=1
# Set up the updates, if provided. # Set up the updates, if provided.
if [ ! -z "$UPDATES" ]; then if [ ! -z "$UPDATES" ]; then
if [ -e /tmp/updates.img -o -e /tmp/updates ]; then if [ -e /tmp/updates.img -o -e /tmp/updates ]; then

View File

@ -18,6 +18,6 @@
# Author: David Cantrell <dcantrell@redhat.com> # Author: David Cantrell <dcantrell@redhat.com>
pixmapsdir = $(datadir)/$(PACKAGE_NAME)/pixmaps pixmapsdir = $(datadir)/$(PACKAGE_NAME)/pixmaps
dist_pixmaps_DATA = *.png dist_pixmaps_DATA = $(srcdir)/*.png $(srcdir)/*.svg
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in

View File

@ -0,0 +1,136 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg7384"
sodipodi:docname="anaconda-selected-icon.svg"
version="1.1"
inkscape:version="0.48+devel r11963"
height="16"
width="16">
<metadata
id="metadata90">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Gnome Symbolic Icon Theme</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
inkscape:cy="6.5413406"
pagecolor="#ffffff"
borderopacity="1"
showborder="true"
inkscape:bbox-paths="false"
guidetolerance="10"
inkscape:object-paths="true"
inkscape:window-width="1145"
showguides="true"
inkscape:object-nodes="true"
inkscape:snap-bbox="true"
inkscape:pageshadow="2"
inkscape:guide-bbox="true"
inkscape:snap-nodes="false"
bordercolor="#666666"
objecttolerance="10"
id="namedview88"
showgrid="false"
inkscape:window-maximized="0"
inkscape:window-x="201"
inkscape:snap-global="true"
inkscape:window-y="27"
gridtolerance="10"
inkscape:window-height="709"
inkscape:snap-to-guides="true"
inkscape:current-layer="layer15"
inkscape:snap-bbox-midpoints="false"
inkscape:zoom="16"
inkscape:cx="6.9516857"
inkscape:snap-grids="true"
inkscape:pageopacity="0"
borderlayer="true">
<inkscape:grid
spacingx="1px"
spacingy="1px"
id="grid4866"
empspacing="2"
enabled="true"
type="xygrid"
snapvisiblegridlinesonly="true"
visible="true" />
</sodipodi:namedview>
<title
id="title9167">Gnome Symbolic Icon Theme</title>
<defs
id="defs7386" />
<g
inkscape:label="status"
transform="translate(-482,-381.99998)"
inkscape:groupmode="layer"
id="layer9"
style="display:inline" />
<g
inkscape:label="devices"
transform="translate(-482,-381.99998)"
inkscape:groupmode="layer"
id="layer10" />
<g
inkscape:label="apps"
transform="translate(-482,-381.99998)"
inkscape:groupmode="layer"
id="layer11" />
<g
inkscape:label="actions"
transform="translate(-482,-381.99998)"
inkscape:groupmode="layer"
id="layer12" />
<g
inkscape:label="places"
transform="translate(-482,-381.99998)"
inkscape:groupmode="layer"
id="layer13" />
<g
inkscape:label="mimetypes"
transform="translate(-482,-381.99998)"
inkscape:groupmode="layer"
id="layer14" />
<g
inkscape:label="emblems"
transform="translate(-482,-381.99998)"
inkscape:groupmode="layer"
id="layer15"
style="display:inline">
<g
inkscape:label="emblem-important"
transform="translate(135.8093,-581.17812)"
id="g17779" />
<path
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
d="M 11.53125 4.3125 C 11.784964 4.3148534 12.043986 4.3496993 12.28125 4.40625 C 12.035802 4.3478581 11.794428 4.3125 11.53125 4.3125 z M 12.28125 4.40625 C 12.505761 4.4597611 12.733193 4.5282014 12.9375 4.625 C 12.73111 4.5265635 12.508413 4.460292 12.28125 4.40625 z M 13.6875 5.125 C 13.850992 5.2667533 13.991932 5.4225624 14.125 5.59375 C 13.993811 5.4260074 13.847799 5.2645304 13.6875 5.125 z M 14.125 5.59375 L 11.71875 7.90625 L 10.8125 6.90625 L 9.78125 7.90625 L 11.71875 9.84375 L 14.78125 7.09375 C 14.688509 6.5295894 14.461839 6.0244437 14.125 5.59375 z M 14.84375 7.625 C 14.84375 8.544865 14.444846 9.3969938 13.84375 10 C 14.452893 9.395735 14.84375 8.5537662 14.84375 7.625 z "
transform="translate(482,381.99998)"
id="path1012" />
<path
inkscape:connector-curvature="0"
d="m 493.51417,386.30805 c -1.82723,0 -3.30412,1.49216 -3.30412,3.33188 0,1.83973 1.47689,3.33189 3.30412,3.33189 1.82723,0 3.318,-1.49216 3.318,-3.33189 0,-0.18508 -0.0267,-0.36456 -0.0555,-0.54143 l -3.06223,2.74335 -1.92929,-1.93014 1.01176,-0.99284 0.91795,0.98022 2.40931,-2.31382 C 495.51856,386.80617 494.57294,386.30805 493.51417,386.30805 Z"
id="path74"
sodipodi:nodetypes="ssssccccccs"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
</g>
<g
inkscape:label="categories"
transform="translate(-482,-381.99998)"
inkscape:groupmode="layer"
id="g4953"
style="display:inline" />
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

@ -0,0 +1,30 @@
<?xml version='1.0' encoding='UTF-8'?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' version='1.1' inkscape:version='0.47 r22583' height='16' sodipodi:docname='dialog-warning-symbolic.svg' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
<metadata id='metadata90'>
<rdf:RDF>
<cc:Work rdf:about=''>
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
<dc:title>Gnome Symbolic Icon Theme</dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview inkscape:cy='-15.45876' inkscape:current-layer='layer9' inkscape:window-width='1310' pagecolor='#555753' showborder='false' showguides='true' inkscape:snap-nodes='true' objecttolerance='10' showgrid='false' inkscape:object-nodes='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:window-x='58' inkscape:snap-bbox='true' bordercolor='#666666' id='namedview88' inkscape:window-maximized='0' inkscape:snap-global='true' inkscape:window-y='353' gridtolerance='10' inkscape:zoom='1' inkscape:window-height='690' borderopacity='1' guidetolerance='10' inkscape:cx='-6.85259' inkscape:bbox-paths='false' inkscape:snap-grids='true' inkscape:pageopacity='1' inkscape:snap-to-guides='true'>
<inkscape:grid visible='true' spacingx='1px' type='xygrid' spacingy='1px' id='grid4866' empspacing='2' enabled='true' snapvisiblegridlinesonly='true'/>
</sodipodi:namedview>
<title id='title9167'>Gnome Symbolic Icon Theme</title>
<defs id='defs7386'/>
<g transform='translate(-301,-257)' inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline'>
<path inkscape:connector-curvature='0' class='warning' d='m 308.91905,257.09375 c -0.5255,-0.0286 -1.03823,0.28305 -1.4375,0.96875 l -6.25,11.59375 C 300.69808,270.61964 301.27977,272 302.3253,272 l 13.15625,0 c 0.98172,0 1.90311,-1.15939 1.21875,-2.34375 L 310.3878,258.125 c -0.39872,-0.64617 -0.94325,-1.00262 -1.46875,-1.03125 z m -0.0313,3.9375 c 0.54448,-0.0172 1.04849,0.48677 1.03125,1.03125 l 0,3.9375 c 0.007,0.52831 -0.47163,1.01424 -1,1.01424 -0.52836,0 -1.00747,-0.48593 -1,-1.01424 l 0,-3.9375 c -0.008,-0.4666 0.3541,-0.91253 0.8125,-1 0.0511,-0.0145 0.10345,-0.025 0.15625,-0.0313 z m -0.9687,6.96875 2,0 0,2 -2,0 0,-2 z' id='path18112' sodipodi:nodetypes='cccccccccccsccscccccc' style='color:#bebebe;fill:#f57900;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.78124988;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new'/>
</g>
<g transform='translate(-301,-257)' inkscape:groupmode='layer' id='layer10' inkscape:label='devices'/>
<g transform='translate(-301,-257)' inkscape:groupmode='layer' id='layer11' inkscape:label='apps'/>
<g transform='translate(-301,-257)' inkscape:groupmode='layer' id='layer12' inkscape:label='actions'/>
<g transform='translate(-301,-257)' inkscape:groupmode='layer' id='layer13' inkscape:label='places'/>
<g transform='translate(-301,-257)' inkscape:groupmode='layer' id='layer14' inkscape:label='mimetypes'/>
<g transform='translate(-301,-257)' inkscape:groupmode='layer' id='layer15' inkscape:label='emblems' style='display:inline'/>
<g transform='translate(-301,-257)' inkscape:groupmode='layer' id='g4953' inkscape:label='categories' style='display:inline'/>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@ -11,6 +11,7 @@ mkdir -p /mnt/sysimage/var/log/anaconda
[ -e /tmp/ifcfg.log ] && cp /tmp/ifcfg.log $ANA_INSTALL_PATH/var/log/anaconda/anaconda.ifcfg.log [ -e /tmp/ifcfg.log ] && cp /tmp/ifcfg.log $ANA_INSTALL_PATH/var/log/anaconda/anaconda.ifcfg.log
[ -e /tmp/yum.log ] && cp /tmp/yum.log $ANA_INSTALL_PATH/var/log/anaconda/anaconda.yum.log [ -e /tmp/yum.log ] && cp /tmp/yum.log $ANA_INSTALL_PATH/var/log/anaconda/anaconda.yum.log
cp /tmp/ks-script*.log $ANA_INSTALL_PATH/var/log/anaconda/ cp /tmp/ks-script*.log $ANA_INSTALL_PATH/var/log/anaconda/
journalctl -b > $ANA_INSTALL_PATH/var/log/anaconda/anaconda.journal.log
chmod 0600 /mnt/sysimage/var/log/anaconda/* chmod 0600 /mnt/sysimage/var/log/anaconda/*
%end %end

View File

@ -19,4 +19,4 @@
postscriptsdir = $(datadir)/$(PACKAGE_NAME)/post-scripts postscriptsdir = $(datadir)/$(PACKAGE_NAME)/post-scripts
dist_postscripts_DATA = 40-qubes-alt-kernels.ks 50-qubes.ks 80-setfilecons.ks 90-copy-screenshots.ks 99-copy-logs.ks dist_postscripts_DATA = 40-qubes-alt-kernels.ks 50-qubes.ks 80-setfilecons.ks 90-copy-screenshots.ks 99-copy-logs.ks
MAINTAINERCLEAFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in

View File

@ -26,11 +26,8 @@ dist_systemd_DATA = anaconda.service \
anaconda-tmux@.service \ anaconda-tmux@.service \
anaconda-shell@.service \ anaconda-shell@.service \
instperf.service \ instperf.service \
anaconda-sshd.service \ anaconda-sshd.service
anaconda-cleanup-initramfs.service
dist_generator_SCRIPTS = anaconda-generator dist_generator_SCRIPTS = anaconda-generator
dist_sbin_SCRIPTS = anaconda-cleanup-initramfs
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in

View File

@ -1,35 +0,0 @@
#!/bin/bash
# anaconda-cleanup-initramfs - clean up initramfs to save RAM.
#
# Normal systems just throw away the initramfs after boot, since they have a
# copy of it in /boot/initramfs-$(uname -r).img that they can unpack and use
# to shut down the system cleanly. (See dracut-shutdown.service.)
#
# We have to keep initramfs because we don't have it laying around in /boot,
# and we might want to read some files out of it (e.g. /etc/cmdline*)
#
# There are still redundant/unneeded files, though, and we can save RAM by
# cleaning those up.
systemd-notify --pid --status="Removing unneeded files..."
# the runtime has all the firmware/modules we need.
# removing the ssl certs saves another easy ~1MB.
rm -rf /run/initramfs/usr/lib/{firmware,modules} \
/run/initramfs/etc/ssl
# Try to compress the remaining initramfs contents.
# 99% of the RAM used by initramfs is in usr/, so just compress/remove that.
# (this also means we save etc/cmdline* and we don't have to move mounts)
# check for cpio and pigz/gzip.
# (xz would be ~4MB smaller but uses 100MB RAM (!). gzip uses ~2MB.)
type -P cpio >/dev/null || exit 0
gzip=$(type -P pigz || type -P gzip) || exit 0
# systemd-notify --ready --> continue startup, do the rest in the background
systemd-notify --ready --status="Compressing initramfs contents..."
mkdir -p /boot
initramfs=/boot/initramfs-$(uname -r).img
find /run/initramfs/usr | cpio -co 2>/dev/null | $gzip -c > $initramfs
rm -rf /run/initramfs/usr

View File

@ -1,11 +0,0 @@
[Unit]
Description=Clean Up Initramfs
Before=anaconda.service
ConditionPathIsDirectory=/run/initramfs/usr/lib/modules
[Service]
Type=notify
NotifyAccess=all
RemainAfterExit=yes
Nice=19
ExecStart=/usr/sbin/anaconda-cleanup-initramfs

View File

@ -3,8 +3,8 @@ WantedBy=anaconda.target
[Unit] [Unit]
Description=the anaconda installation program Description=the anaconda installation program
Wants=instperf.service rsyslog.service udev-settle.service NetworkManager.service Wants=instperf.service rsyslog.service systemd-udev-settle.service NetworkManager.service
After=instperf.service rsyslog.service udev-settle.service NetworkManager.service anaconda-sshd.service After=instperf.service rsyslog.service systemd-udev-settle.service NetworkManager.service anaconda-sshd.service
Requires=anaconda.service Requires=anaconda.service
[Service] [Service]

View File

@ -3,9 +3,8 @@ Description=Anaconda System Services
Requires=basic.target Requires=basic.target
After=basic.target After=basic.target
AllowIsolate=yes AllowIsolate=yes
Wants=anaconda-cleanup-initramfs.service
Wants=instperf.service Wants=instperf.service
Wants=rsyslog.service Wants=rsyslog.service
Wants=udev-settle.service Wants=systemd-udev-settle.service
Wants=NetworkManager.service Wants=NetworkManager.service
Wants=plymouth-quit.service plymouth-quit-wait.service Wants=plymouth-quit.service plymouth-quit-wait.service

View File

@ -17,13 +17,10 @@
# #
# Author: David Cantrell <dcantrell@redhat.com> # Author: David Cantrell <dcantrell@redhat.com>
EXTRA_DIST = install-methods.txt mediacheck.txt \ EXTRA_DIST = boot-options.txt mediacheck.txt \
lvm_sanity_checks.txt rescue-mode api.cfg making-screenshots \ lvm_sanity_checks.txt rescue-mode api.cfg making-screenshots \
threads.txt command-line.txt gettext.txt transifex.txt threads.txt gettext.txt transifex.txt
CLEANFILES = api *.xml CLEANFILES = api *.xml
MAINTAINERCLEANFILES = Makefile.in command-line.txt MAINTAINERCLEANFILES = Makefile.in
command-line.txt:
curl -4 -A "anaconda-build" -o command-line.txt "http://fedoraproject.org/w/index.php?title=Anaconda_Boot_Options&action=raw"

View File

@ -0,0 +1,396 @@
Anaconda Boot Options
=====================
:Author: Anaconda Developers <anaconda-devel-list@redhat.com>
//Actual authors:
// Will Woods <wwoods@redhat.com>
// Anne Mulhern <amulhern@redhat.com>
// written in asciidoc: http://www.methods.co.nz/asciidoc/
// here's a few macros to improve readability in the text below..
:dracutdoc: http://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html
:dracutkernel: {dracutdoc}#dracutcmdline7[`dracut.kernel(7)`]
:dracutnet: {dracutdoc}#_network[the "Network" section of `dracut.kernel(7)`]
:dracutdebug: {dracutdoc}#_troubleshooting[dracut "Troubleshooting" guide]
:anacondawiki: https://fedoraproject.org/wiki/Anaconda[Anaconda wiki]
These are the boot options that are useful when starting Anaconda. For more
information refer to the appropriate Installation Guide for your release and
to the {anacondawiki}.
Anaconda bootup is handled by dracut, so most of the kernel arguments handled
by dracut are also valid. See {dracutkernel} for details on those options.
Throughout this guide, installer-specific options are prefixed with
`inst` (e.g. `inst.ks`). Options specified without the `inst` prefix are
recognized, but the prefix may be required in a future release.
[[repo]]
Installation Source
-------------------
.Installable Trees
[NOTE]
==============================================================================
An _installable tree_ is a directory structure containing installer
images, packages, and repodata.
footnote:[an installable tree must contain a valid `.treeinfo` file for
`inst.repo` or `inst.stage2` to work.]
Usually this is either a copy of the DVD media (or loopback-mounted DVD
image), or the `<arch>/os/` directory on the Fedora mirrors.
==============================================================================
[[inst.repo]]
=== inst.repo ===
This gives the location of the _Install Source_ - that is, the place where the
installer can find its images and packages. It can be specified in a few
different ways:
`inst.repo=cdrom`::
Search the system's CDROM drives for installer media. This is the default.
`inst.repo=cdrom:<device>`::
Look for installer media in the specified disk device.
`inst.repo=hd:<device>:<path>`::
Mount the given disk partition and install from the given path.
`inst.repo=[http,https,ftp]://<host>/<path>`::
Look for an installable tree at the given URL.
`inst.repo=nfs:[<options>:]<server>:/<path>`::
Mount the given NFS server and path. Uses NFS version *3* by default.
+
You can specify what version of the NFS protocol to use by adding +nfsvers=X+
to the `options`.
[[diskdev]]
.Disk Device Names
[NOTE]
======================================================================
Disk devices may be specified with any of the following forms:
Kernel Device Name::
`/dev/sda1`, `sdb2`
Filesystem Label::
`LABEL=FLASH`, `LABEL=Fedora`, `CDLABEL=Fedora\x2017\x20x86_64`
Filesystem UUID::
`UUID=8176c7bf-04ff-403a-a832-9557f94e61db`
Non-alphanumeric characters should be escaped with +\xNN+, where
'NN' is the hexidecimal representation of the character (e.g. +\x20+ for
the space character (' ').
======================================================================
=== inst.stage2 ===
This specifies the location to fetch only the installer runtime image;
packages will be ignored. Otherwise the same as <<inst.repo,`inst.repo`>>.
[[kickstart]]
Kickstart
---------
=== inst.ks ===
Give the location of a kickstart file to be used to automate the install.
Locations may be specified using any of the formats allowed for
<<inst.repo,`inst.repo`>>.
For any format the `<path>` component defaults to `/ks.cfg` if it is omitted.
If `inst.ks` is used without a value, the installer will look for
`nfs:<next_server>:/<filename>`:
* `<next_server>` is the DHCP "next-server" option, or the IP of the DHCP server itself,
* `<filename>` is the DHCP "filename" option, or `/kickstart/`, and
* if the filename given ends in `/`, `<ip>-kickstart` is added
* example:
** DHCP server: `192.168.122.1`
** client address: `192.168.122.100`
*** kickstart file: `nfs:192.168.122.1:/kickstart/192.168.122.100-kickstart`
==== inst.ks.sendmac ====
Add headers to outgoing HTTP requests which include the MAC addresses of all
network interfaces. The header is of the form:
* `X-RHN-Provisioning-MAC-0: eth0 01:23:45:67:89:ab`
This is helpful when using `inst.ks=http...` to provision systems.
==== inst.ks.sendsn ====
Add a header to outgoing HTTP requests which includes the system's serial
number. footnote:[as read from `/sys/class/dmi/id/product_serial`]
The header is of the form:
* `X-System-Serial-Number: <serial>`
[[network]]
Network Options
---------------
Initial network setup is handled by dracut. For detailed information consult
{dracutnet}.
The most common dracut network options are covered here, along with some
installer-specific options.
=== ip ===
Configure one (or more) network interfaces. You can use multiple `ip`
arguments to configure multiple interfaces, but if you do you must specify an
interface for every `ip=` argument, and you must specify which interface
is the primary boot interface with `bootdev`.
Accepts a few different forms; the most common are:
`ip=<dhcp|dhcp6|auto6|ibft>`::
Try to bring up every interface using the given autoconf method. Defaults
to `ip=dhcp` if network is required by `inst.repo`, `inst.ks`, `inst.updates`,
etc.
`ip=<interface>:<autoconf>`::
Bring up only one interface using the given autoconf method, e.g.
`ip=eth0:dhcp`.
`ip=<ip>::<gateway>:<netmask>:<hostname>:<interface>:none`::
Bring up the given interface with a static network config, where:
[horizontal]
`<ip>`::: The client IP address. IPv6 addresses may be specified by putting
them in square brackets, like so: `[2001:DB8::1]`.
`<gateway>`::: The default gateway. IPv6 addresses are accepted here too.
`<netmask>`::: The netmask (e.g. `255.255.255.0`) or prefix (e.g. `64`).
`<hostname>`::: Hostname for the client machine. This component is optional.
`ip=<ip>::<gateway>:<netmask>:<hostname>:<interface>:<autoconf>:<mtu>`::
Bring up the given interface with the given autoconf method, but override the
automatically obtained IP/gateway/etc. with the provided values.
+
Technically all of the items are optional, so if you want to use dhcp but also
set a hostname you can use `ip=::::<hostname>::dhcp`.
=== nameserver ===
Specify the address of a nameserver to use. May be used multiple times.
=== bootdev ===
Specify which interface is the boot device. Required if multiple ip=
options are used.
=== ifname ===
`ifname=<interface>:<MAC>`::
Assign the given interface name to the network device with the given MAC. May
be used multiple times.
=== inst.dhcpclass ===
Set the DHCP vendor class identifier.
footnote:[ISC `dhcpd` will see this value as "option
vendor-class-identifier".] Defaults to `anaconda-$(uname -srm)`.
Console / Display Options
-------------------------
[[console]]
=== console ===
This is a kernel option that specifies what device to use as the primary
console. For example, if your console should be on the first serial port, use
`console=ttyS0`.
You can use multiple `console=` options; boot message will be displayed on
all consoles, but anaconda will put its display on the last console listed.
Implies <<inst.text,`inst.text`>>.
=== inst.lang ===
Set the language to be used during installation. The language specified must
be valid for the `lang` kickstart command.
=== inst.geoloc ===
Configure geolocation usage in Anaconda. Geolocation is used to pre-set
language and time zone.
`inst.geoloc=0`:: Disables geolocation.
`inst.geoloc=provider_fedora_geoip`:: Use the Fedora GeoIP API (default).
`inst.geoloc=provider_hostip`:: Use the Hostip.info GeoIP API.
=== inst.keymap ===
Set the keyboard layout to use. The layout specified must be valid for use with
the `keyboard` kickstart command.
=== inst.cmdline ===
Run the installer in command-line mode. This mode does not
allow any interaction; all options must be specified in a kickstart file or
on the command line.
=== inst.graphical ===
Run the installer in graphical mode. This is the default.
[[inst.text]]
=== inst.text ===
Run the installer using a limited text-based UI. Unless you're using a
kickstart file this probably isn't a good idea; you should use VNC instead.
[[inst.vnc]]
=== inst.vnc ===
Run the installer GUI in a VNC session. You will need a VNC client application
to interact with the installer. VNC sharing is enabled, so multiple clients
may connect.
A system installed with VNC will start in text mode (runlevel 3).
==== inst.vncpassword ====
Set a password on the VNC server used by the installer.
==== inst.vncconnect ====
`inst.vncconnect=<host>[:<port>]`::
Once the install starts, connect to a listening VNC client at the given host.
Default port is 5900.
+
Use with `vncviewer -listen`.
=== inst.headless ===
Specify that the machine being installed onto doesn't have any display
hardware, and that anaconda shouldn't bother looking for it.
=== inst.xdriver ===
Specify the X driver that should be used during installation and on the
installed system.
=== inst.usefbx ===
Use the framebuffer X driver (`fbdev`) rather than a hardware-specific driver.
Equivalent to `inst.xdriver=fbdev`.
=== inst.sshd ===
Start up `sshd` during system installation. You can then ssh in while the
installation progresses to debug or monitor its progress.
*NOTE*: The `root` account has no password by default. You can set one using
the `sshpw` kickstart command.
Debugging and Troubleshooting
-----------------------------
=== inst.mediacheck ===
Verify the installer media before starting the install.
=== inst.rescue ===
Run the rescue environment. This is useful for trying to diagnose and fix
broken systems.
[[inst.updates]]
=== inst.updates ===
Give the location of an `updates.img` to be applied to the installer runtime.
Locations may be specified using any of the formats allowed for `inst.repo`.
For any format the `<path>` component defaults to `/updates.img` if it is
omitted.
=== inst.loglevel ===
`inst.loglevel=<debug|info|warning|error|critical>`::
Set the minimum level required for messages to be logged on a terminal (log
files always contain messages of all levels). The default value is `info`.
=== inst.syslog ===
`inst.syslog=<host>[:<port>]`::
Once installation is running, send log messages to the syslog process on
the given host. The default port is 514 (UDP).
+
Requires the remote syslog process to accept incoming connections.
=== inst.virtiolog ===
Forward logs through the named virtio port (a character device at
`/dev/virtio-ports/<name>`). A port named `org.fedoraproject.anaconda.log.0`
will be used by default, if found.
Deprecated Options
------------------
These options should still be accepted by the installer, but they are
deprecated and may be removed soon.
=== method ===
This is an alias for <<inst.repo,`inst.repo`>>.
=== repo=nfsiso:... ===
The difference between an installable tree and a dir with an `.iso` file is
autodetected, so this is the same as `inst.repo=nfs:`...
=== dns ===
Use <<network,`nameserver`>> instead. Note that `nameserver` does not
accept comma-separated lists; use multiple `nameserver` options instead.
=== netmask, gateway, hostname ===
These can be provided as part of the <<network,`ip`>> option.
=== ip=bootif ===
A PXE-supplied BOOTIF option will be used automatically, so there's no need
for this.
=== ksdevice ===
[horizontal]
_Not present_:: The first device with a usable link is used
`ksdevice=link`:: Ignored (this is the same as the default behavior)
`ksdevice=bootif`:: Ignored (this is the default if `BOOTIF=` is present)
`ksdevice=ibft`:: Replaced with <<network, `ip=ibft`>>
`ksdevice=<MAC>`:: Replaced with <<network, `BOOTIF=${MAC/:/-}`>>
`ksdevice=<DEV>`:: Replaced with <<network,`bootdev=$MAC`>>
=== blacklist, nofirewire ===
`modprobe` handles blacklisting kernel modules on its own; try
`modprobe.blacklist=<mod1>,<mod2>...`
You can blacklist the firewire module with `modprobe.blacklist=firewire_ohci`.
Removed Options
---------------
These options are obsolete and have been removed.
=== askmethod, asknetwork ===
Anaconda's initramfs is now is completely non-interactive, so these have been
removed.
Instead, use <<repo,`inst.repo`>> or specify appropriate <<network,`network`>>
options.
=== serial ===
This option was never intended for public use; it was supposed to be used to
force anaconda to use `/dev/ttyS0` as its console when testing it on a live
machine.
Use `console=ttyS0` or similar instead. See <<console,`console`>> for details.
=== updates ===
Use <<inst.updates,`inst.updates`>> instead.
=== essid, wepkey, wpakey ===
Dracut doesn't support wireless networking, so these don't do anything.
=== ethtool ===
Who needs to force half-duplex 10-base-T anymore?
=== gdb ===
This was used to debug `loader`, so it has been removed. There are plenty of
options for debugging dracut-based initramfs - see the {dracutdebug}.
=== ks=floppy ===
We no longer support floppy drives. Try `inst.ks=hd:<device>` instead.
=== display ===
For remote display of the UI, use <<inst.vnc,`inst.vnc`>>.
=== utf8 ===
All this option actually did was set `TERM=vt100`. The default `TERM` setting
works fine these days, so this was no longer necessary.
=== noipv6 ===
ipv6 is built into the kernel and can't be removed. You should be able to
disable it with `ipv6.disable`, though.
=== upgradeany ===
Anaconda doesn't handle upgrades anymore.
// vim: set tw=78 syntax=asciidoc:

View File

@ -1,137 +0,0 @@
11-07-2006
----------
Contents
--------
1) Description of install methods
2) Extra notes on install methods
1)Description of Anaconda Install Methods (and ways of updating it)
-------------------------------------------------------------------
Notes:
------------
- "fully exploded tree" - this is a tree which in the root has every
directory with .rpm files from every CD image merged into one directory
with the same name.
(So everything from cd's Client directories goes to Client directory and
likewise for Server, VT, Workstation ... dirs)
- "ISO" - the ISO image for a CD image.
- "anaconda updates" - patches for anaconda to fix bugs/etc.
- "anaconda updates=[http://url|ftp://url]" - patches for anaconda to fix
bugs/etc. that can be downloaded from the specified remote location.
The image is the same format as an updates.img as specified below.
- all paths without a leading '/' are relative to directory specified
to installer containing install source.
- 'updates.img' is a ext2 filesystem containing the updated python
sources and modules for anaconda.
Current Installation Methods:
-----------------------------
- CDROM / DVD
-------------
Summary:
This is pretty self-explanatory. Mounts the disc and installs packages,
prompts user to switch discs when the next disc is required.
Update Options:
- floppy or USB key drive.
- 'updates.img' file in 'images/' directory of disc #1 image.
- remote updates.img downloaded via FTP or HTTP.
- NFS (from a fully exploded tree)
----------------------------------
Summary:
Mounts directory from NFS server.
Update Options:
- floppy or USB key drive.
- 'updates.img' file in 'images/' directory.
- remote updates.img downloaded via FTP or HTTP.
- NFS (from a directory of ISOs)
--------------------------------
Summary:
Loopback mounts ISO images from NFS server.
Update Options:
- floppy or USB key drive.
- 'updates.img' file in 'images/' directory.
- remote updates.img downloaded via FTP or HTTP.
- FTP/HTTP (from a fully exploded tree)
---------------------------------------
Summary:
Pulls files from tree via FTP or HTTP.
Update Options:
- floppy or USB key drive.
- 'updates.img' file in 'images/' directory.
- remote updates.img downloaded via FTP or HTTP.
- FTP/HTTP (from a directory of loopback-mounted ISOs)
------------------------------------------------------
Summary:
Pulls files from tree via FTP or HTTP. Looks in 'disc1/' directory
to contain files from disc #1, 'disc2/' for disc #2, etc. These can be
created on the server by loopback mounting the ISO images into these
directories under the directory made available to ftp.
Update Options:
- floppy or USB key drive.
- 'updates.img' file in 'images/' directory in ISO image for disc #1.
- remote updates.img downloaded via FTP or HTTP.
Hard Drive from ISOs
--------------------
Summary:
Similar to NFS ISO-based method - loopback mounts ISOs in directory
specified by user. The ISOs must be on an ext2 or vfat partition,
not a logical volume.
Update Options:
- floppy or USB key drive.
- 'updates.img' file in 'images/' directory of ISO image for CD #1.
- remote updates.img downloaded via FTP or HTTP.
2)Extra Notes:
--------------
By default NFS, harddrive, and CDROM/DVD-based installs are graphical,
unless the 'text' option is passed on the boot command line.
FTP and HTTP are text-based, unless 'graphical' is passed on the command
line. For a graphical FTP or HTTP install to occur, one of the following
must be true:
- the file 'RedHat/base/stage2.img' must exist on the install server. In
this case this file is downloaded int RAM, taking about 64MB to store.
It is recommended to only use this option on machines with more than
192MB of RAM.
or:
- the rescue CD is in the CD drive, in which case the stage2.img file
will be mounted from the rescue CD. The packages will still be
downloaded from the FTP/HTTP server. No additional memory is required
because the second stage of the installer is mounted from the CD.
You can also specify 'graphical' or 'text' as kickstart directives in
the kickstart config file you use, and this has the same affect as if you
put the directive on the boot command line.

View File

@ -70,13 +70,7 @@ THREAD NAMES
PYGTK AND THREADS PYGTK AND THREADS
GTK+ presents the biggest challenge for threads, but it's not GTK+ presents the biggest challenge for threads, but it's not
impossible. We will be allowing GTK+ calls from any thread, so we impossible. When you call gtk.main(), you need to call it like this:
have to call threads_init() in gui.py as the first thing:
gtk.gdk.threads_init()
After this, you can use Python threads as you normally would. When
you call gtk.main(), you need to call it like this:
gtk.threads_enter() gtk.threads_enter()
gtk.main() gtk.main()

View File

@ -90,40 +90,40 @@ it to use.
CREATING A NEW ANACONDA BRANCH CREATING A NEW ANACONDA BRANCH
------------------------------ ------------------------------
When we make a new branch, we need to branch the translation files. Do this When we make a new branch, we need to branch the translation files.
with:
tx set --execute --auto-local -r anaconda.BRANCH_NAME -s en \ First you need to populate the project with the initial po files. I suggest
using the ones from the master branch, e.g.:
git checkout master
git clean -xdf
tx pull -a
# leave the *.po files in the po/ subdirectory
git checkout BRANCH_NAME
Next you need to update the transifex config with the new branch:
tx set --execute --auto-local -r anaconda.BRANCH_NAME -s en -t PO \
-f po/anaconda.pot "po/<lang>.po" -f po/anaconda.pot "po/<lang>.po"
The last argument is correct as-is, it's not a place where you substitute The last argument is correct as-is, it's not a place where you substitute
something for <lang>. The BRANCH_NAME will be something other than 'master'. something for <lang>. The BRANCH_NAME will be something other than 'master'.
For example, when we branch for F-16: For example, when we branch for F-20:
tx set --execute --auto-local -r anaconda.f16-branch -s en \ tx set --execute --auto-local -r anaconda.f20-branch -s en -t PO \
-f po/anaconda.pot "po/<lang>.po" -f po/anaconda.pot "po/<lang>.po"
Check the .tx/config file on the branch to ensure it references the correct Check the .tx/config file on the branch to ensure it references the correct
anaconda.BRANCH_NAME in Transifex and remove the [anaconda.master] block so anaconda.BRANCH_NAME in Transifex and remove the [anaconda.master] block so
that it doesn't try to push to master and the new branch. that it doesn't try to push to master and the new branch.
Once you have run "tx set", you need to populate the project with the initial Now you can run:
po files. I suggest using the ones from the master branch, e.g.:
git checkout master
git clean -xdf
tx pull -a
# leave the *.po files in the po/ subdirectory
git checkout f18-branch
Log into transifex.net and select 'Add New Resource' for the Anaconda
project. Upload the po/anaconda.pot file as the Resource File, name it
f18-branch and select 'PO File(.po)' for the I18N Type. After the resource
is created you should then be able to push to it with:
tx push -s -t tx push -s -t
This will push the po files and anaconda.pot from master to the f16-branch This will push the po files and anaconda.pot from master to the BRANCH_NAME
resource for anaconda in Transifex. This is just an initial seed that the resource for anaconda in Transifex. This is just an initial seed that the
translation team can work with. And since we branch from master, the code translation team can work with. And since we branch from master, the code
should be more or less in sync with the po files at branch time. should be more or less in sync with the po files at branch time.
Don't forget to commit the new .tx/config file to the branch.

View File

@ -28,7 +28,6 @@ dist_dracut_SCRIPTS = module-setup.sh \
repo-genrules.sh \ repo-genrules.sh \
kickstart-genrules.sh \ kickstart-genrules.sh \
updates-genrules.sh \ updates-genrules.sh \
anaconda-udevprop.sh \
anaconda-ks-sendheaders.sh \ anaconda-ks-sendheaders.sh \
anaconda-netroot.sh \ anaconda-netroot.sh \
anaconda-diskroot \ anaconda-diskroot \
@ -38,7 +37,16 @@ dist_dracut_SCRIPTS = module-setup.sh \
fetch-kickstart-disk \ fetch-kickstart-disk \
fetch-updates-disk \ fetch-updates-disk \
parse-kickstart \ parse-kickstart \
anaconda-modprobe.sh anaconda-modprobe.sh \
save-initramfs.sh \
anaconda-pre-shutdown.sh \
parse-anaconda-dd.sh \
fetch-driver-net.sh \
driver-updates@.service \
driver-updates-net@.service \
driver-updates.sh \
driver-updates-net.sh \
anaconda-depmod.sh \
driver-updates
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in

51
anaconda/dracut/README-dd Normal file
View File

@ -0,0 +1,51 @@
Driver Update Disk Handling
anaconda-dracut takes advantage of dracut's hooks in order to load driver
modules before the rest of the installer is executed.
cmdline hook
parse-anaconda-dd.sh
parses the inst.dd/dd arguments for URIs and saves all of them into $dd_args
and calls set_neednet if network is needed to retrieve a driver rpm
The files will be downloaded when the network device online hook is executed.
initqueue/online
fetch-driver-net.sh
If URLs are passed to inst.dd they are all downloaded into /tmp/DD-net/
pre-trigger hook
driver-updates.sh
Looks for devices labeled OEMDRV and starts the systemd service for the UI
Also saves the initial state of the module list and uses udev to trigger
loading of existing modules.
pre-pivot hook
driver-updates-net.sh
Check for network downloaded driver rpms and start the systemd service to
load the drivers.
anaconda-depmod.sh
If any drivers were installed or downloaded run depmod on the $NEWROOT
Systemd Services
driver-updates@.service and driver-updates-net@.service
These services launch the driver update UI (/bin/driver-updates). The -net
version passes the path to the rpm's that have been downloaded from the
network. They handle connecting the tty so that the user can select drivers
if inst.dd has been passed on the cmdline.
driver-updates
This searches disks labeled OEMDRV for driver update repositories and
optionally lets the user pick individual drivers. It will also search
unlabeled devices if they are passed on the kernel cmdline with
inst.dd=/dev/sdb2
Pass it the path to a directory of rpms (eg. downloaded from the
network) and it will install them before checking for additional OEMDRV
labeled devices.
Pass inst.dd with no parameters and it will prompt the user for specific
drivers to load using a simple text user interface.

View File

@ -1,5 +1,7 @@
#!/bin/sh #!/bin/sh
# Copy over cmdline(.d) files from the initrd to /run before pivot # Copy over cmdline(.d) files from the initrd to /run before pivot
mkdir -p /run/install/cmdline.d mkdir -p /run/install/cmdline.d
cp /etc/cmdline.d/* /run/install/cmdline.d/ for f in /etc/cmdline.d/*; do
cp /etc/cmdline /run/install/ [ -e $f ] && cp $f /run/install/cmdline.d/
done
[ -e /etc/cmdline ] && cp /etc/cmdline /run/install/

View File

@ -0,0 +1,5 @@
#!/bin/sh
[ -e /run/install/DD-1 -o -e /tmp/DD-net ] || return 0
# regenerate modules.* files
depmod -b $NEWROOT

View File

@ -15,10 +15,13 @@ run_checkisomd5() {
if [ -n "$DRACUT_SYSTEMD" ]; then if [ -n "$DRACUT_SYSTEMD" ]; then
p=$(str_replace "$livedev" "-" '\x2d') p=$(str_replace "$livedev" "-" '\x2d')
systemctl start checkisomd5@${p}.service systemctl start checkisomd5@${p}.service
status=$(systemctl -p ExecMainStatus show checkisomd5@${p}.service)
splitsep "=" "$status" ignore rc
else else
checkisomd5 --verbose $livedev checkisomd5 --verbose $livedev
rc=$?
fi fi
if [ $? -ne 0 ]; then if [ "$rc" == "1" ]; then
die "CD check failed!" die "CD check failed!"
exit 1 exit 1
fi fi

View File

@ -43,6 +43,17 @@ find_runtime() {
done done
} }
find_tty() {
# find the real tty for /dev/console
local tty="console"
while [ -f /sys/class/tty/$tty/active ]; do
tty=$(< /sys/class/tty/$tty/active)
tty=${tty##* } # last item in the list
done
echo $tty
}
repodir="/run/install/repo" repodir="/run/install/repo"
isodir="/run/install/isodir" isodir="/run/install/isodir"
rulesfile="/etc/udev/rules.d/90-anaconda.rules" rulesfile="/etc/udev/rules.d/90-anaconda.rules"
@ -95,13 +106,13 @@ anaconda_auto_updates() {
unpack_updates_img $dir/updates.img /updates unpack_updates_img $dir/updates.img /updates
fi fi
if [ -e $dir/product.img ]; then if [ -e $dir/product.img ]; then
unpack_updates_img $dir/product.img /updates/tmp/product unpack_updates_img $dir/product.img /updates
fi fi
} }
# Unpack an image into the given dir. # Unpack an image into the given dir.
unpack_updates_img() { unpack_updates_img() {
local img="$1" tmpdir="/tmp/${1##*/}.$$" outdir="${2:+/updates}" local img="$1" tmpdir="/tmp/${1##*/}.$$" outdir="${2:-/updates}"
# NOTE: unpack_img $img $outdir can clobber existing subdirs in $outdir, # NOTE: unpack_img $img $outdir can clobber existing subdirs in $outdir,
# which is why we use a tmpdir and copytree (which doesn't clobber) # which is why we use a tmpdir and copytree (which doesn't clobber)
unpack_img $img $tmpdir unpack_img $img $tmpdir
@ -192,7 +203,7 @@ run_kickstart() {
# replay udev events to trigger actions # replay udev events to trigger actions
if [ "$do_disk" ]; then if [ "$do_disk" ]; then
. $hookdir/pre-udev/*repo-genrules.sh . $hookdir/pre-trigger/*repo-genrules.sh
udevadm control --reload udevadm control --reload
udevadm trigger --action=change --subsystem-match=block udevadm trigger --action=change --subsystem-match=block
fi fi

0
anaconda/dracut/anaconda-modprobe.sh Normal file → Executable file
View File

View File

@ -58,7 +58,7 @@ case $repo in
updates=$(fetch_url $repo/images/updates.img) updates=$(fetch_url $repo/images/updates.img)
[ -n "$updates" ] && unpack_updates_img $updates /updates [ -n "$updates" ] && unpack_updates_img $updates /updates
product=$(fetch_url $repo/images/product.img) product=$(fetch_url $repo/images/product.img)
[ -n "$product" ] && unpack_updates_img $product /updates/tmp/product [ -n "$product" ] && unpack_updates_img $product /updates
/sbin/dmsquash-live-root $runtime /sbin/dmsquash-live-root $runtime
fi fi
;; ;;

View File

@ -0,0 +1,21 @@
# Fix mount loops that prevent unmount/eject.
#
# During startup, we mount our repo (e.g. the DVD) at $repodir or $isodir.
# We then mount the runtime image from that repo at /newroot and switch into it.
# Switching moves $repodir to /newroot/$repodir, which creates a mount loop:
#
# -> You can't unmount the runtime image because the DVD is mounted under it
# -> You can't unmount the DVD because it holds the mounted runtime image
#
# And now you can't unmount or eject the DVD!
#
# We fix this by moving the repo mounts back out from under the runtime image
# during shutdown. Then everything can be unmounted like normal.
. /lib/anaconda-lib.sh
for mnt in $repodir $isodir; do
# systemd-shutdown puts old root at /oldroot
oldmnt=/oldroot$mnt
grep -qw $oldmnt /proc/mounts && mount --move $oldmnt $mnt
done

View File

@ -1,6 +0,0 @@
#!/bin/sh
# anaconda-pre-trigger.sh: set udev properties before the rules run
# THIS! IS! ANACONDA!!!
udevproperty ANACONDA=1
# (used in udev rules to keep stuff like mdadm, multipath, etc. out of our way)

View File

@ -0,0 +1,588 @@
#!/usr/bin/python
#
# Copyright (C) 2013 by Red Hat, Inc. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Author(s): Brian C. Lane <bcl@brianlane.com>
#
"""
Driver Update Disk UI
/tmp/dd_modules is a copy of /proc/modules at startup time
/tmp/dd_args is a parsed list of the inst.dd= cmdline args, and may include
'dd' or 'inst.dd' if it was specified without arguments
Pass a path and it will install the driver rpms from the path before checking
for new OEMDRV devices.
Repositories for installed drivers are copied into /run/install/DD-X where X
starts at 1 and increments for each repository.
Selected driver package names are saved in /run/install/dd_packages
Anaconda uses the repository and package list to install the same set of drivers
to the target system.
"""
import logging
from logging.handlers import SysLogHandler
import sys
import os
import subprocess
import time
log = logging.getLogger("DD")
class RunCmdError(Exception):
""" Raised when run_cmd gets a non-zero returncode
"""
pass
def run_cmd(cmd):
""" Run a command, collect stdout and the returncode. stderr is ignored.
:param cmd: command and arguments to run
:type cmd: list of strings
:returns: exit code and stdout from the command
:rtype: (int, string)
:raises: OSError if the cmd doesn't exist, RunCmdError if the rc != 0
"""
try:
with open("/dev/null", "w") as fd_null:
log.debug(" ".join(cmd))
proc = subprocess.Popen(cmd,
stdout=subprocess.PIPE,
stderr=fd_null)
out = proc.communicate()[0]
if out:
for line in out.splitlines():
log.debug(line)
except OSError as e:
log.error("Error running %s: %s" % (cmd[0], e.strerror))
raise
if proc.returncode:
log.debug("%s returned %s" % (cmd[0], proc.returncode))
raise RunCmdError()
return (proc.returncode, out)
def oemdrv_list():
""" Get a list of devices labeled as OEMDRV
:returns: list of devices
:rtype: list
"""
try:
outlines = run_cmd(["blkid", "-t", "LABEL=OEMDRV", "-o", "device"])[1]
except (OSError, RunCmdError):
# Nothing with that label
return []
else:
return outlines.splitlines()
def is_dd(dd_path):
""" Determine if a path is a valid DD for the current arch
:param dd_path: Path to the DD directory to test
:type dd_path: string
:returns: True if it is a valid DD
:rtype: bool
"""
arch = os.uname()[4]
return os.path.exists(dd_path+"/rhdd3") and \
not os.path.isdir(dd_path+"/rpms/%s" % arch)
def get_dd_args():
""" Get the dd arguments from /tmp/dd_args
:returns: List of arguments
:rtype: list of strings
"""
try:
dd_args = open("/tmp/dd_args", "r").readline().split()
except IOError:
return []
# skip dd args that need networking
net_protocols = ["http", "https", "ftp", "nfs", "nfs4"]
return filter(lambda x: x.split(":")[0].lower() not in net_protocols, dd_args)
def is_interactive():
""" Determine if the user requested interactive driver selection
:returns: True if 'dd' or 'inst.dd' included in /tmp/dd_args False if not
:rtype: bool
"""
dd_args = get_dd_args()
if "dd" in dd_args or "inst.dd" in dd_args:
return True
else:
return False
def umount(device):
""" Unmount the device
:param device: Device to unmount
:type device: string
:returns: None
"""
try:
run_cmd(["umount", device])
except (OSError, RunCmdError):
pass
def mount_device(device, mnt="/media/DD/"):
""" Mount a device and check to see if it really is a driver disk
:param device: path to device to mount
:type device: string
:param mnt: path to mount the device on
:type mnt: string
:returns: True if it is a DD, False if not
:rtype: bool
It is unmounted if it is not a DD and left mounted if it is.
"""
try:
run_cmd(["mount", device, mnt])
except (OSError, RunCmdError):
return False
return True
def copy_repo(dd_path, dest_prefix):
""" Copy the current arch's repository to a unique destination
:param dd_path: Path to the driver repo directory
:type dd_path: string
:param dest_prefix: Destination directory prefix, a number is added
:type dest_prefix: string
:returns: None
The destination directory names are in the order that the drivers
were loaded, starting from 1
"""
suffix = 1
while os.path.exists(dest_prefix+str(suffix)):
suffix += 1
dest = dest_prefix+str(suffix)
os.makedirs(dest)
try:
run_cmd(["cp", "-ar", dd_path, dest])
except (OSError, RunCmdError):
pass
def copy_file(src, dest):
""" Copy a file
:param src: Source file
:type src: string
:param dest: Destination file
:type dest: string
:returns: None
"""
try:
run_cmd(["cp", "-a", src, dest])
except (OSError, RunCmdError):
pass
def move_file(src, dest):
""" Move a file
:param src: Source file
:type src: string
:param dest: Destination file
:type dest: string
:returns: None
"""
try:
run_cmd(["mv", "-f", src, dest])
except (OSError, RunCmdError):
pass
def find_dd(mnt="/media/DD"):
""" Find all suitable DD repositories under a path
:param mnt: Top of the directory tree to search
:type mnt: string
:returns: list of DD repositories
:rtype: list
"""
dd_repos = []
arch = os.uname()[4]
for root, dirs, files in os.walk(mnt, followlinks=True):
if "rhdd3" in files and "rpms" in dirs and \
os.path.exists(root+"/rpms/"+arch):
dd_repos.append(root+"/rpms/"+arch)
log.debug("Found repos - %s" % " ".join(dd_repos))
return dd_repos
def get_module_set(fname):
""" Read a module list and return a set of the names
:param fname: Full path to filename
:type fname: string
:returns: set of the module names
"""
modules = set()
if os.path.exists(fname):
with open(fname, "r") as f:
for line in f:
mod_args = line.strip().split()
if mod_args:
modules.update([mod_args[0]])
return modules
def reload_modules():
""" Reload new module versions from /lib/modules/<kernel>/updates/
"""
try:
run_cmd(["depmod", "-a"])
except (OSError, RunCmdError):
pass
# Make a list of modules added since startup
startup_modules = get_module_set("/tmp/dd_modules")
startup_modules.update(["virtio_blk", "virtio_net"])
current_modules = get_module_set("/proc/modules")
new_modules = current_modules.difference(startup_modules)
log.debug("new_modules = %s" % " ".join(new_modules))
# I think we can just iterate once using modprobe -r to remove unused deps
for module in new_modules:
try:
run_cmd(["modprobe", "-r", module])
except (OSError, RunCmdError):
pass
time.sleep(2)
# Reload the modules, using the new versions from /lib/modules/<kernel>/updates/
try:
run_cmd(["udevadm", "trigger"])
except (OSError, RunCmdError):
pass
class Driver(object):
def __init__(self):
self.source = ""
self.name = ""
self.flags = ""
self.description = []
self.selected = False
@property
def args(self):
return ["--%s" % a for a in self.flags.split()]
@property
def rpm(self):
return self.source
def fake_drivers(num):
""" Generate a number of fake drivers for testing
"""
drivers = []
for i in xrange(0, num):
d = Driver()
d.source = "driver-%d" % i
d.flags = "modules"
drivers.append(d)
return drivers
def dd_list(dd_path, kernel_ver=None, anaconda_ver=None):
""" Build a list of the drivers in the directory
:param dd_path: Path to the driver repo
:type dd_path: string
:returns: list of drivers
:rtype: Driver object
By default none of the drivers are selected
"""
if not kernel_ver:
kernel_ver = os.uname()[2]
if not anaconda_ver:
anaconda_ver = "19.0"
try:
outlines = run_cmd(["dd_list", "-k", kernel_ver, "-a", anaconda_ver, "-d", dd_path])[1]
except (OSError, RunCmdError):
return []
# Output format is:
# source rpm\n
# name\n
# flags\n
# description (multi-line)\n
# ---\n
drivers = []
new_driver = Driver()
line_idx = 0
for line in outlines.splitlines():
log.debug(line)
if line == "---":
drivers.append(new_driver)
new_driver = Driver()
line_idx = 0
elif line_idx == 0:
new_driver.source = line
line_idx += 1
elif line_idx == 1:
new_driver.name = line
line_idx += 1
elif line_idx == 2:
new_driver.flags = line
line_idx += 1
elif line_idx == 3:
new_driver.description.append(line)
return drivers
def dd_extract(driver, dest_path="/updates/", kernel_ver=None):
""" Extract a driver rpm to a destination path
:param driver: Driver to extract
:type driver: Driver object
:param dest_path: Top directory of the destination path
:type dest_path: string
:returns: None
This extracts the driver's files into 'dest_path' (which defaults
to /updates/ so that the normal live updates handling will overlay
any binary or library updates onto the initrd automatically.
"""
if not kernel_ver:
kernel_ver = os.uname()[2]
cmd = ["dd_extract", "-k", kernel_ver]
cmd += driver.args
cmd += ["--rpm", driver.rpm, "--directory", dest_path]
log.info("Extracting files from %s" % driver.rpm)
try:
run_cmd(cmd)
except (OSError, RunCmdError):
log.error("dd_extract failed, skipped %s" % driver.rpm)
return
# Create the destination directories
initrd_updates = "/lib/modules/" + os.uname()[2] + "/updates/"
ko_updates = dest_path + initrd_updates
initrd_firmware = "/lib/firmware/updates/"
firmware_updates = dest_path + initrd_firmware
for d in (initrd_updates, ko_updates, initrd_firmware, firmware_updates):
if not os.path.exists(d):
os.makedirs(d)
# Copy *.ko files over to /updates/lib/modules/<kernel>/updates/
for root, dirs, files in os.walk(dest_path+"/lib/modules/"):
if root.endswith("/updates") and os.path.isdir(root):
continue
for f in (f for f in files if f.endswith(".ko")):
src = root+"/"+f
copy_file(src, ko_updates)
move_file(src, initrd_updates)
# Copy the firmware updates
for root, dirs, files in os.walk(dest_path+"/lib/firmware/"):
if root.endswith("/updates") and os.path.isdir(root):
continue
for f in (f for f in files):
src = root+"/"+f
copy_file(src, firmware_updates)
move_file(src, initrd_firmware)
def select_drivers(drivers):
""" Display pages of drivers to be loaded.
:param drivers: Drivers to be selected by the user
:type drivers: list of Driver objects
:returns: None
"""
page_length = 20
page = 1
while True:
# show a page of drivers
print("\nPage %d of %d" % (page, 1 + (len(drivers) / page_length)))
print("Select drivers to install")
for i in xrange(0, min(len(drivers), page_length)):
driver_idx = ((page-1) * page_length) + i
if drivers[driver_idx].selected:
selected = "x"
else:
selected = " "
print("%3d) [%s] %s" % (i+1, selected, drivers[driver_idx].source))
# Select driver to toggle, continue or change pages
idx = raw_input("\n# to toggle selection, 'n'-next page, 'p'-previous page or 'c'-continue: ")
if idx.isdigit():
if int(idx) < 1 or int(idx) > min(len(drivers), page_length):
print("Invalid selection")
continue
driver_idx = ((page-1) * page_length) + int(idx) - 1
drivers[driver_idx].selected = not drivers[driver_idx].selected
elif idx.lower() == 'n':
if page < 1 + (len(drivers) / page_length):
page += 1
else:
print("Last page")
elif idx.lower() == 'p':
if page > 1:
page -= 1
else:
print("First page")
elif idx.lower() == 'c':
return
def process_dd(dd_path):
""" Handle installing modules, firmware, enhancements from the dd repo
:param dd_path: Path to the driver repository
:type dd_path: string
:returns: None
"""
drivers = dd_list(dd_path)
log.debug("drivers = %s" % " ".join([d.rpm for d in drivers]))
# If interactive mode or rhdd3.rules pass flag to deselect by default?
if os.path.exists(dd_path+"/rhdd3.rules") or is_interactive():
select_drivers(drivers)
if not any((d.selected for d in drivers)):
return
else:
map(lambda d: setattr(d, "selected", True), drivers)
# Copy the repository for Anaconda to use during install
if os.path.isdir(dd_path+"/repodata"):
copy_repo(dd_path, "/updates/run/install/DD-")
for driver in filter(lambda d: d.selected, drivers):
dd_extract(driver, "/updates/")
# Write the package names for all modules and firmware for Anaconda
if os.path.isdir(dd_path+"/repodata") \
and ("modules" in driver.flags or "firmwares" in driver.flags):
with open("/run/install/dd_packages", "a") as f:
f.write("%s\n" % driver.name)
reload_modules()
def select_dd(device):
""" Mount a device and check it for Driver Update repos
:param device: Path to the device to mount and check
:type device: string
:returns: None
"""
mnt = "/media/DD/"
if not os.path.isdir(mnt):
os.makedirs(mnt)
if not mount_device(device, mnt):
return
dd_repos = find_dd(mnt)
for repo in dd_repos:
log.info("Processing DD repo %s on %s" % (repo, device))
process_dd(repo)
# TODO - does this need to be done before module reload?
umount(device)
def network_driver(dd_path):
""" Handle network driver download, then scan for new OEMDRV devices.
:param dd_path: Path to the downloaded driver rpms
:type dd_path: string
:returns: None
"""
skip_dds = set(oemdrv_list())
log.info("Processing Network Drivers from %s" % dd_path)
process_dd(dd_path)
# TODO: May need to add new drivers to /tmp/dd_modules to prevent them from being unloaded
# Scan for new OEMDRV devices
dd_scan(skip_dds)
def dd_scan(skip_dds=None):
""" Scan the system for OEMDRV devices and and specified by dd=/dev/<device>
:param skip_dds: devices to skip when checking for OEMDRV label
:type skip_dds: set()
:returns: None
"""
if skip_dds:
dd_finished = skip_dds
dd_todo = set(oemdrv_list()).difference(dd_finished)
if dd_todo:
log.info("Found new OEMDRV device(s) - %s" % ", ".join(dd_todo))
else:
dd_finished = set()
dd_todo = set(oemdrv_list())
# Add the user specified devices
dd_devs = get_dd_args()
dd_devs = [dev for dev in dd_devs if dev not in ("dd", "inst.dd")]
dd_todo.update(dd_devs)
log.info("Checking devices %s" % ", ".join(dd_todo))
# Process each Driver Disk, checking for new disks after each one
while dd_todo:
device = dd_todo.pop()
log.info("Checking device %s" % device)
select_dd(device)
dd_finished.update([device])
new_oemdrv = set(oemdrv_list()).difference(dd_finished, dd_todo)
if new_oemdrv:
log.info("Found new OEMDRV device(s) - %s" % ", ".join(new_oemdrv))
dd_todo.update(new_oemdrv)
if __name__ == '__main__':
log.setLevel(logging.DEBUG)
handler = SysLogHandler(address="/dev/log")
log.addHandler(handler)
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
formatter = logging.Formatter("DD: %(message)s")
handler.setFormatter(formatter)
log.addHandler(handler)
if len(sys.argv) > 1:
network_driver(sys.argv[1])
else:
dd_scan()

View File

@ -0,0 +1,19 @@
#!/bin/sh
[ -e /tmp/DD-net ] || return 0
command -v getarg >/dev/null || . /lib/dracut-lib.sh
. /lib/anaconda-lib.sh
if [ -n "$(ls /tmp/DD-net)" ]; then
# Run the systemd service for network drivers
tty=$(find_tty)
# Update module list so we don't unload the network driver
cat /proc/modules > /tmp/dd_modules
info "Starting Network Driver Update Disk Service on $tty"
systemctl start driver-updates-net@$tty.service
status=$(systemctl -p ExecMainStatus show driver-updates-net@$tty.service)
info "Network DD status=$status"
rm -rf /tmp/DD-net
fi

View File

@ -0,0 +1,17 @@
[Unit]
Description=Network Driver Update Disk UI on %I
DefaultDependencies=no
Before=shutdown.target
[Service]
Type=oneshot
RemainAfterExit=no
WorkingDirectory=/tmp
Environment=LANG=en_US.UTF-8
ExecStart=/bin/driver-updates /tmp/DD-net/
StandardInput=tty-force
StandardOutput=inherit
StandardError=inherit
TTYPath=/dev/%I
TTYReset=yes
TimeoutSec=0

View File

@ -0,0 +1,31 @@
#!/bin/bash
# Determine if a Driver Update Disk is present, or inst.dd passed on the cmdline
# and launch the driver update systemd service
# save module state
cat /proc/modules > /tmp/dd_modules
# load all modules
udevadm trigger
udevadm settle
# Look for devices with the OEMDRV label
blkid -t LABEL=OEMDRV > /dev/null
blkid_rc=$?
# dd_args will have been set by parse-anaconda-dd.sh cmdline hook
if [ -n "$dd_args" -o $blkid_rc -eq 0 ]; then
command -v getarg >/dev/null || . /lib/dracut-lib.sh
. /lib/anaconda-lib.sh
tty=$(find_tty)
# kludge to let kernel spit out some extra info w/o stomping on our UI
sleep 5
echo "$dd_args" > /tmp/dd_args
info "Starting Driver Update Disk Service on $tty"
systemctl start driver-updates@$tty.service
status=$(systemctl -p ExecMainStatus show driver-updates@$tty.service)
info "DD status=$status"
fi

View File

@ -0,0 +1,17 @@
[Unit]
Description=Driver Update Disk UI on %I
DefaultDependencies=no
Before=shutdown.target
[Service]
Type=oneshot
RemainAfterExit=no
WorkingDirectory=/tmp
Environment=LANG=en_US.UTF-8
ExecStart=/bin/driver-updates
StandardInput=tty-force
StandardOutput=inherit
StandardError=inherit
TTYPath=/dev/%I
TTYReset=yes
TimeoutSec=0

View File

@ -0,0 +1,31 @@
#!/bin/bash
# fetch-driver-net - fetch driver from the network.
# runs from the "initqueue/online" hook whenever a net interface comes online
# initqueue/online hook passes interface name as $1
netif="$1"
# We already processed the dd_args - exit
[ -e /tmp/dd-net.done ] && return 0
# no dd requested - exit
[ -n "$dd_args" ] || return 0
command -v getarg >/dev/null || . /lib/dracut-lib.sh
. /lib/url-lib.sh
dd_repo=/tmp/DD-net/
for dd in $dd_args; do
case "${dd%%:*}" in
http|https|ftp|nfs|nfs4)
[ -e "$dd_repo" ] || mkdir -p $dd_repo
info "Fetching driver from $dd"
if driver=$(fetch_url "$dd"); then
mv "$driver" $dd_repo
else
warn "Failed to fetch driver from $dd"
fi
;;
esac
done
echo > /tmp/dd-net.done

View File

@ -18,7 +18,7 @@ if [ -n "$mnt" ]; then
else else
tmpmnt="$(mkuniqdir /run/install tmpmnt)" tmpmnt="$(mkuniqdir /run/install tmpmnt)"
if mount -o ro $dev $tmpmnt; then if mount -o ro $dev $tmpmnt; then
cp $tmpmnt$path /tmp/ks.cfg cp $tmpmnt/$path /tmp/ks.cfg
umount $tmpmnt umount $tmpmnt
rmdir $tmpmnt rmdir $tmpmnt
fi fi

View File

@ -36,13 +36,14 @@ if [ "$kickstart" = "nfs:auto" ]; then
fi fi
done done
} < /tmp/net.$netif.lease } < /tmp/net.$netif.lease
# filename is appended with '$IP_ADDR-kickstart' if ending in '/'
if [ "${filename%/}" != "$filename" ]; then
filename="${filename}${new_ip_address}-kickstart"
fi
kickstart="nfs:$server:$filename" kickstart="nfs:$server:$filename"
fi fi
# kickstart is appended with '$IP_ADDR-kickstart' if ending in '/'
if [ "${kickstart%/}" != "$kickstart" ]; then
kickstart="${kickstart}${new_ip_address}-kickstart"
fi
info "anaconda fetching kickstart from $kickstart" info "anaconda fetching kickstart from $kickstart"
if fetch_url "$kickstart" /tmp/ks.cfg; then if fetch_url "$kickstart" /tmp/ks.cfg; then
parse_kickstart /tmp/ks.cfg parse_kickstart /tmp/ks.cfg

View File

@ -1,6 +1,8 @@
#!/bin/sh #!/bin/sh
# generate udev rules for fetching kickstarts. # generate udev rules for fetching kickstarts.
. /lib/anaconda-lib.sh
case "${kickstart%%:*}" in case "${kickstart%%:*}" in
http|https|ftp|nfs) http|https|ftp|nfs)
# handled by fetch-kickstart-net in the online hook # handled by fetch-kickstart-net in the online hook

View File

@ -15,6 +15,12 @@ depends() {
} }
install() { install() {
# binaries we want in initramfs
dracut_install eject -o pigz
dracut_install depmod blkid
inst_binary /usr/libexec/anaconda/dd_list /bin/dd_list
inst_binary /usr/libexec/anaconda/dd_extract /bin/dd_extract
# anaconda # anaconda
inst "$moddir/anaconda-lib.sh" "/lib/anaconda-lib.sh" inst "$moddir/anaconda-lib.sh" "/lib/anaconda-lib.sh"
inst_hook cmdline 25 "$moddir/parse-anaconda-options.sh" inst_hook cmdline 25 "$moddir/parse-anaconda-options.sh"
@ -22,22 +28,32 @@ install() {
inst_hook cmdline 27 "$moddir/parse-anaconda-repo.sh" inst_hook cmdline 27 "$moddir/parse-anaconda-repo.sh"
inst_hook cmdline 28 "$moddir/parse-anaconda-net.sh" inst_hook cmdline 28 "$moddir/parse-anaconda-net.sh"
inst_hook pre-udev 30 "$moddir/anaconda-modprobe.sh" inst_hook pre-udev 30 "$moddir/anaconda-modprobe.sh"
inst_hook pre-udev 40 "$moddir/repo-genrules.sh" inst_hook pre-trigger 50 "$moddir/repo-genrules.sh"
inst_hook pre-udev 40 "$moddir/kickstart-genrules.sh" inst_hook pre-trigger 50 "$moddir/kickstart-genrules.sh"
inst_hook pre-udev 40 "$moddir/updates-genrules.sh" inst_hook pre-trigger 50 "$moddir/updates-genrules.sh"
inst_hook pre-trigger 40 "$moddir/anaconda-udevprop.sh"
inst_hook initqueue/settled 00 "$moddir/anaconda-ks-sendheaders.sh" inst_hook initqueue/settled 00 "$moddir/anaconda-ks-sendheaders.sh"
inst_hook initqueue/online 80 "$moddir/anaconda-netroot.sh" inst_hook initqueue/online 80 "$moddir/anaconda-netroot.sh"
inst "$moddir/anaconda-diskroot" "/sbin/anaconda-diskroot" inst "$moddir/anaconda-diskroot" "/sbin/anaconda-diskroot"
inst_hook pre-pivot 99 "$moddir/anaconda-copy-ks.sh" inst_hook pre-pivot 50 "$moddir/anaconda-copy-ks.sh"
inst_hook pre-pivot 99 "$moddir/anaconda-copy-cmdline.sh" inst_hook pre-pivot 50 "$moddir/anaconda-copy-cmdline.sh"
inst_hook pre-pivot 99 "$moddir/save-initramfs.sh"
inst_hook pre-shutdown 50 "$moddir/anaconda-pre-shutdown.sh"
# kickstart parsing, WOOOO # kickstart parsing, WOOOO
inst_hook initqueue/online 10 "$moddir/fetch-kickstart-net.sh" inst_hook initqueue/online 11 "$moddir/fetch-kickstart-net.sh"
inst "$moddir/fetch-kickstart-disk" "/sbin/fetch-kickstart-disk" inst "$moddir/fetch-kickstart-disk" "/sbin/fetch-kickstart-disk"
inst "$moddir/fetch-updates-disk" "/sbin/fetch-updates-disk" inst "$moddir/fetch-updates-disk" "/sbin/fetch-updates-disk"
inst "$moddir/parse-kickstart" "/sbin/parse-kickstart" inst "$moddir/parse-kickstart" "/sbin/parse-kickstart"
# Driver Update Disks
inst_hook cmdline 29 "$moddir/parse-anaconda-dd.sh"
inst_hook initqueue/online 10 "$moddir/fetch-driver-net.sh"
inst_hook pre-trigger 40 "$moddir/driver-updates.sh"
inst_hook pre-pivot 10 "$moddir/driver-updates-net.sh"
inst_hook pre-pivot 50 "$moddir/anaconda-depmod.sh"
inst "$moddir/driver-updates" "/bin/driver-updates"
inst_simple "$moddir/driver-updates@.service" "/etc/systemd/system/driver-updates@.service"
inst_simple "$moddir/driver-updates-net@.service" "/etc/systemd/system/driver-updates-net@.service"
# python deps for parse-kickstart. DOUBLE WOOOO # python deps for parse-kickstart. DOUBLE WOOOO
$moddir/python-deps $moddir/parse-kickstart | while read dep; do $moddir/python-deps $moddir/parse-kickstart $moddir/driver-updates | while read dep; do
case "$dep" in case "$dep" in
*.so) inst_library $dep ;; *.so) inst_library $dep ;;
*.py) inst_simple $dep ;; *.py) inst_simple $dep ;;

View File

@ -0,0 +1,19 @@
#!/bin/bash
# parse-anaconda-dd.sh: handle driver update disk settings
# no need to do this twice
[ -f /tmp/dd-net.done ] && return
command -v getarg >/dev/null || . /lib/dracut-lib.sh
# inst.dd: May provide a "URI" for the driver rpm (possibly more than one)
dd_args="$(getargs dd= inst.dd=)"
for dd in $dd_args; do
case "${dd%%:*}" in
http|https|ftp|nfs|nfs4)
set_neednet
break
;;
esac
done
export dd_args

View File

@ -5,6 +5,15 @@ net_conf=/etc/cmdline.d/75-anaconda-network-options.conf
check_depr_arg "dns" "nameserver=%s" check_depr_arg "dns" "nameserver=%s"
mac_to_bootif() {
local bootif=${1}
local IFS=':'
bootif=$(for i in ${bootif} ; do echo -n $i-; done)
bootif=${bootif%-}
bootif="01-$bootif"
echo $bootif
}
# handle ksdevice (tell us which device to use for ip= stuff later) # handle ksdevice (tell us which device to use for ip= stuff later)
export ksdevice="" export ksdevice=""
ksdev_val=$(getarg ksdevice=) ksdev_val=$(getarg ksdevice=)
@ -16,15 +25,20 @@ if [ -n "$ksdev_val" ]; then
ibft) ibft)
warn "'ksdevice=ibft' is deprecated. Using 'ip=ibft' instead." warn "'ksdevice=ibft' is deprecated. Using 'ip=ibft' instead."
echo "ip=ibft" > $net_conf echo "ip=ibft" > $net_conf
ksdevice="ibft0"
;; ;;
bootif) bootif)
warn "'ksdevice=bootif' does nothing (BOOTIF is used by default if present)" warn "'ksdevice=bootif' does nothing (BOOTIF is used by default if present)"
;; ;;
??:??:??:??:??:??) ??:??:??:??:??:??)
warn "'ksdevice=<MAC>' is deprecated. Using 'ifname=ksdev0:<MAC>' instead."
ksdevice="ksdev0" BOOTIF=$(getarg 'BOOTIF=')
echo "ifname=$ksdevice:$ksdev_val" > $net_conf if [ -n "$BOOTIF" ] ; then
warn "'ksdevice=<MAC>' is deprecated. Supplied BOOTIF takes precedence."
else
bootif=$(mac_to_bootif "$ksdev_val")
warn "'ksdevice=<MAC>' is deprecated. Using BOOTIF=$bootif instead."
echo "BOOTIF=$bootif" > $net_conf
fi
;; ;;
*) ksdevice="$ksdev_val" ;; *) ksdevice="$ksdev_val" ;;
esac esac

View File

@ -86,7 +86,6 @@ check_removed_arg ethtool
# interactive junk in initramfs # interactive junk in initramfs
# (maybe we'll bring it back someday?) # (maybe we'll bring it back someday?)
check_removed_arg askmethod "Use an appropriate 'inst.repo=' argument instead."
check_removed_arg asknetwork "Use an appropriate 'ip=' argument instead." check_removed_arg asknetwork "Use an appropriate 'ip=' argument instead."
# lang & keymap # lang & keymap
@ -125,8 +124,14 @@ if updates=$(getarg updates inst.updates); then
fi fi
fi fi
# for vnc bring network up in initramfs so that cmdline configuration is used
getargbool 0 vnc inst.vnc && warn "anaconda requiring network for vnc" && set_neednet
# make sure we get ifcfg for every interface that comes up # make sure we get ifcfg for every interface that comes up
echo 'save_netinfo $netif' > $hookdir/initqueue/online/anaconda-ifcfg.sh echo 'save_netinfo $netif' > $hookdir/initqueue/online/anaconda-ifcfg.sh
# Driver Update Disk
warn_renamed_arg "dd" "inst.dd"
# re-read the commandline args # re-read the commandline args
unset CMDLINE unset CMDLINE

View File

@ -13,6 +13,8 @@
import sys, os import sys, os
import logging import logging
import shutil
import uuid
from pykickstart.parser import KickstartParser, preprocessKickstart from pykickstart.parser import KickstartParser, preprocessKickstart
from pykickstart.version import returnClassForVersion from pykickstart.version import returnClassForVersion
from pykickstart.errors import KickstartError from pykickstart.errors import KickstartError
@ -50,25 +52,30 @@ proc_cmdline = read_cmdline("/proc/cmdline")
# Here are the kickstart commands we care about: # Here are the kickstart commands we care about:
class Method(commands.method.F14_Method): class Cdrom(commands.cdrom.FC3_Cdrom):
'''install methods: cdrom, harddrive, nfs, url'''
def dracut_args(self, args, lineno, obj): def dracut_args(self, args, lineno, obj):
if self.method == "cdrom": return "inst.repo=cdrom"
method="cdrom"
elif self.method == "harddrive": class HardDrive(commands.harddrive.FC3_HardDrive):
if self.biospart: def dracut_args(self, args, lineno, obj):
method="bd:%s:%s" % (self.partition, self.dir) if self.biospart:
else: return "inst.repo=bd:%s:%s" % (self.partition, self.dir)
method="hd:%s:%s" % (self.partition, self.dir) else:
elif self.method == "nfs": return "inst.repo=hd:%s:%s" % (self.partition, self.dir)
method="nfs:%s:%s" % (self.server, self.dir)
if self.opts: class NFS(commands.nfs.FC6_NFS):
method += ":%s" % self.opts def dracut_args(self, args, lineno, obj):
elif self.method == "url": method="nfs:%s:%s" % (self.server, self.dir)
# FIXME: self.proxy, self.noverifyssl if self.opts:
method = self.url method += ":%s" % self.opts
return "inst.repo=%s" % method return "inst.repo=%s" % method
class URL(commands.url.F18_Url):
def dracut_args(self, args, lineno, obj):
# FIXME: self.proxy, self.noverifyssl
return "inst.repo=%s" % self.url
class Updates(commands.updates.F7_Updates): class Updates(commands.updates.F7_Updates):
def dracut_args(self, args, lineno, obj): def dracut_args(self, args, lineno, obj):
if self.url == "floppy": if self.url == "floppy":
@ -91,7 +98,7 @@ class DriverDisk(commands.driverdisk.F14_DriverDisk):
if location: if location:
return "inst.driverdisk=%s" % location return "inst.driverdisk=%s" % location
class Network(commands.network.F16_Network): class Network(commands.network.F20_Network):
def dracut_args(self, args, lineno, net): def dracut_args(self, args, lineno, net):
''' '''
NOTE: The first 'network' line get special treatment: NOTE: The first 'network' line get special treatment:
@ -138,13 +145,18 @@ class DisplayMode(commands.displaymode.FC3_DisplayMode):
elif self.displayMode == DISPLAY_MODE_GRAPHICAL: elif self.displayMode == DISPLAY_MODE_GRAPHICAL:
return "inst.graphical" return "inst.graphical"
# TODO: keymap, lang... device? upgrade? selinux? class Bootloader(commands.bootloader.F19_Bootloader):
def dracut_args(self, args, lineno, obj):
if self.extlinux:
return "extlinux"
# TODO: keymap, lang... device? selinux?
dracutCmds = { dracutCmds = {
'cdrom': Method, 'cdrom': Cdrom,
'harddrive': Method, 'harddrive': HardDrive,
'nfs': Method, 'nfs': NFS,
'url': Method, 'url': URL,
'updates': Updates, 'updates': Updates,
'mediacheck': MediaCheck, 'mediacheck': MediaCheck,
'driverdisk': DriverDisk, 'driverdisk': DriverDisk,
@ -152,6 +164,7 @@ dracutCmds = {
'cmdline': DisplayMode, 'cmdline': DisplayMode,
'graphical': DisplayMode, 'graphical': DisplayMode,
'text': DisplayMode, 'text': DisplayMode,
'bootloader': Bootloader,
} }
handlerclass = returnClassForVersion() handlerclass = returnClassForVersion()
class DracutHandler(handlerclass): class DracutHandler(handlerclass):
@ -190,6 +203,7 @@ def ksnet_to_dracut(args, lineno, net, bootdev=False):
'''Translate the kickstart network data into dracut network data.''' '''Translate the kickstart network data into dracut network data.'''
line = [] line = []
ip="" ip=""
autoconf=""
if is_mac(net.device): # this is a MAC - find the interface name if is_mac(net.device): # this is a MAC - find the interface name
mac = net.device mac = net.device
@ -200,9 +214,9 @@ def ksnet_to_dracut(args, lineno, net, bootdev=False):
# NOTE: dracut currently only does ipv4 *or* ipv6, so only one ip=arg.. # NOTE: dracut currently only does ipv4 *or* ipv6, so only one ip=arg..
if net.bootProto in (BOOTPROTO_DHCP, BOOTPROTO_BOOTP): if net.bootProto in (BOOTPROTO_DHCP, BOOTPROTO_BOOTP):
ip="dhcp" autoconf="dhcp"
elif net.bootProto == BOOTPROTO_IBFT: elif net.bootProto == BOOTPROTO_IBFT:
ip="ibft" autoconf="ibft"
elif net.bootProto == BOOTPROTO_QUERY: elif net.bootProto == BOOTPROTO_QUERY:
log.error("'%s': --bootproto=query is deprecated", " ".join(args)) log.error("'%s': --bootproto=query is deprecated", " ".join(args))
elif net.bootProto == BOOTPROTO_STATIC: elif net.bootProto == BOOTPROTO_STATIC:
@ -212,18 +226,22 @@ def ksnet_to_dracut(args, lineno, net, bootdev=False):
log.warn("line %u: network missing %s", lineno, missing) log.warn("line %u: network missing %s", lineno, missing)
else: else:
ip="{0.ip}::{0.gateway}:{0.netmask}:" \ ip="{0.ip}::{0.gateway}:{0.netmask}:" \
"{0.hostname}:{0.device}:none".format(net) "{0.hostname}:{0.device}:none:{0.mtu}".format(net)
elif net.ipv6 == "auto": elif net.ipv6 == "auto":
ip="auto6" autoconf="auto6"
elif net.ipv6 == "dhcp": elif net.ipv6 == "dhcp":
ip="dhcp6" autoconf="dhcp6"
elif net.ipv6: elif net.ipv6:
ip="[{0.ipv6}]::{0.gateway}:{0.netmask}:" \ ip="[{0.ipv6}]::{0.ipv6gateway}:{0.netmask}:" \
"{0.hostname}:{0.device}:none".format(net) "{0.hostname}:{0.device}:none:{0.mtu}".format(net)
if net.device and not ip.endswith(":none"): if autoconf:
line.append("ip=%s:%s" % (net.device, ip)) if net.device or net.mtu:
else: ip="%s:%s:%s" % (net.device, autoconf, net.mtu)
else:
ip=autoconf
if ip:
line.append("ip=%s" % ip) line.append("ip=%s" % ip)
for ns in net.nameserver.split(","): for ns in net.nameserver.split(","):
@ -257,7 +275,8 @@ def ksnet_to_ifcfg(net, filename=None):
dev = find_devname(dev) dev = find_devname(dev)
if not dev: if not dev:
return return
if not os.path.isdir("/sys/class/net/%s" % dev): if (not os.path.isdir("/sys/class/net/%s" % dev)
and not net.bondslaves and not net.teamslaves):
log.info("can't find device %s" % dev) log.info("can't find device %s" % dev)
return return
ifcfg = dict() ifcfg = dict()
@ -267,7 +286,7 @@ def ksnet_to_ifcfg(net, filename=None):
os.makedirs("/tmp/ifcfg") os.makedirs("/tmp/ifcfg")
ifcfg['DEVICE'] = dev ifcfg['DEVICE'] = dev
ifcfg['HWADDR'] = readsysfile("/sys/class/net/%s/address" % dev) ifcfg['HWADDR'] = readsysfile("/sys/class/net/%s/address" % dev)
ifcfg['UUID'] = readsysfile("/proc/sys/kernel/random/uuid") ifcfg['UUID'] = str(uuid.uuid4())
# we set real ONBOOT value in anaconda, here # we set real ONBOOT value in anaconda, here
# we use it to activate devcies by NM on start # we use it to activate devcies by NM on start
ifcfg['ONBOOT'] = "yes" if net.activate else "no" ifcfg['ONBOOT'] = "yes" if net.activate else "no"
@ -285,42 +304,126 @@ def ksnet_to_ifcfg(net, filename=None):
# ipv6 settings # ipv6 settings
if net.noipv6: if net.noipv6:
ifcfg['IPV6INIT'] = "no" ifcfg['IPV6INIT'] = "no"
elif net.ipv6: else:
ifcfg['IPV6INIT'] = "yes" ifcfg['IPV6INIT'] = "yes"
if net.ipv6 == 'dhcp': if net.ipv6 == 'dhcp':
ifcfg['DHCPV6C'] = "yes" ifcfg['DHCPV6C'] = "yes"
elif net.ipv6 == 'auto': ifcfg['IPV6_AUTOCONF'] = "no"
ifcfg['IPV6_AUTOCONF'] = "yes" # NOTE: redundant (this is the default) if net.ipv6gateway:
elif ':' in net.ipv6: ifcfg['IPV6_DEFAULTGW'] = net.ipv6gateway
ifcfg['IPV6ADDR'] = net.ipv6 elif net.ipv6 == 'auto':
ifcfg['IPV6_AUTOCONF'] = "yes" # NOTE: redundant (this is the default)
elif ':' in net.ipv6:
ifcfg['IPV6ADDR'] = net.ipv6
ifcfg['IPV6_AUTOCONF'] = "no"
# misc stuff # misc stuff
if net.mtu: if net.mtu:
ifcfg['MTU'] = net.mtu ifcfg['MTU'] = net.mtu
if net.nameserver: if net.nameserver:
ifcfg['DNS1'] = net.nameserver for i, ip in enumerate(net.nameserver.split(",")):
ifcfg["DNS%d" % (i+1)] = ip
if net.nodefroute: if net.nodefroute:
ifcfg['DEFROUTE'] = "no" ifcfg['DEFROUTE'] = "no"
# TODO: dhcpclass, ethtool, essid/wepkey/wpakay, etc. # TODO: dhcpclass, ethtool, essid/wepkey/wpakay, etc.
try: if net.bootProto == 'dhcp':
log.info("writing ifcfg for %s", dev) srcpath = "/tmp/dhclient.%s.lease" % dev
outf = open(filename, "w") dstdir = "/tmp/ifcfg-leases"
outf.write('# Generated by parse-kickstart\n') dstpath = "%s/dhclient-%s-%s.lease" % (dstdir, ifcfg['UUID'], dev)
for k,v in ifcfg.items(): if os.path.exists(srcpath):
outf.write("%s=%s\n" % (k,v)) if not os.path.isdir(dstdir):
outf.close() os.makedirs(dstdir)
except IOError as e: shutil.copyfile(srcpath, dstpath)
log.error("can't write %s: %s" % (filename, str(e)))
else: if net.bondslaves:
ifcfg.pop('HWADDR')
ifcfg['TYPE'] = "Bond"
ifcfg['BONDING_MASTER'] = "yes"
ifcfg['NAME'] = "Bond connection %s" % dev
if ';' in net.bondopts:
sep = ";"
else:
sep = ","
ifcfg['BONDING_OPTS'] = '"' + " ".join(net.bondopts.split(sep)) + '"'
for i, slave in enumerate(net.bondslaves.split(","), 1):
slave_ifcfg = {
'TYPE' : "Ethernet",
'NAME' : "%s slave %s" % (dev, i),
'UUID' : str(uuid.uuid4()),
'ONBOOT' : "yes",
'MASTER' : dev,
'HWADDR' : readsysfile("/sys/class/net/%s/address" % slave),
}
# not using NM naming conventions, following dracut so that it does not
# override kickstart config by generating its own ifcfg files for slaves
#slave_filename = "/tmp/ifcfg/ifcfg-%s" % "_".join(slave_ifcfg['NAME'].split(" "))
# FIXME - change in dracut?
slave_filename = "/tmp/ifcfg/ifcfg-%s" % slave
log.info("writing ifcfg %s for slave %s of bond %s" % (slave_filename, slave, dev))
write_ifcfg(slave_filename, slave_ifcfg)
if net.teamslaves:
ifcfg.pop('HWADDR')
ifcfg['TYPE'] = "Team"
ifcfg['NAME'] = "Team connection %s" % dev
ifcfg['TEAM_CONFIG'] = "'" + net.teamconfig + "'"
for i, (slave, cfg) in enumerate(net.teamslaves):
slave_ifcfg = {
'DEVICE': slave,
'DEVICETYPE' : "TeamPort",
'NAME' : "%s slave %s" % (dev, i),
'UUID' : str(uuid.uuid4()),
'ONBOOT' : "yes",
'TEAM_MASTER' : dev,
# 'HWADDR' : readsysfile("/sys/class/net/%s/address" % slave),
}
if cfg:
slave_ifcfg['TEAM_PORT_CONFIG'] = "'" + cfg + "'"
# not using NM naming conventions, following dracut so that it does not
# override kickstart config by generating its own ifcfg files for slaves
#slave_filename = "/tmp/ifcfg/ifcfg-%s" % "_".join(slave_ifcfg['NAME'].split(" "))
# FIXME - change in dracut?
slave_filename = "/tmp/ifcfg/ifcfg-%s" % slave
log.info("writing ifcfg %s for slave %s of team %s" % (slave_filename, slave, dev))
write_ifcfg(slave_filename, slave_ifcfg)
if net.vlanid:
interface_name = "%s.%s" % (dev, net.vlanid)
ifcfg.pop('HWADDR')
ifcfg['TYPE'] = "Vlan"
ifcfg['VLAN'] = "yes"
ifcfg['VLAN_ID'] = net.vlanid
ifcfg['NAME'] = "VLAN connection %s" % interface_name
ifcfg['DEVICE'] = interface_name
ifcfg['PHYSDEV'] = dev
filename = "/tmp/ifcfg/ifcfg-%s" % interface_name
log.info("writing ifcfg %s for %s" % (filename, dev))
if write_ifcfg(filename, ifcfg):
return filename return filename
def write_ifcfg(filename, ifcfg):
try:
with open(filename, "w") as f:
f.write('# Generated by parse-kickstart\n')
for k,v in ifcfg.items():
f.write("%s=%s\n" % (k,v))
except IOError as e:
log.error("can't write %s: %s" % (filename, e))
return False
return True
def process_kickstart(ksfile): def process_kickstart(ksfile):
handler = DracutHandler() handler = DracutHandler()
handler.ksdevice = os.environ.get('ksdevice') handler.ksdevice = os.environ.get('ksdevice')
parser = KickstartParser(handler, missingIncludeIsFatal=False) parser = KickstartParser(handler, missingIncludeIsFatal=False, errorsAreFatal=False)
log.info("processing kickstart file %s", ksfile) log.info("processing kickstart file %s", ksfile)
processed_file = preprocessKickstart(ksfile) processed_file = preprocessKickstart(ksfile)
try: try:

View File

@ -26,24 +26,22 @@ def pyfiles(moddir):
yield os.path.join(curdir, f) yield os.path.join(curdir, f)
# OK. Use modulefinder to find all the modules etc. this script uses! # OK. Use modulefinder to find all the modules etc. this script uses!
finder = ModuleFinder()
finder.run_script(sys.argv[1]) # parse the script
mods = [] mods = []
deps = [] deps = []
for script in sys.argv[1:]:
finder = ModuleFinder()
finder.run_script(script) # parse the script
for name, mod in finder.modules.iteritems():
if not mod.__file__: # this module is builtin, so we can skip it
continue
for name, mod in finder.modules.iteritems(): if mod.__file__ not in deps: # grab the file itself
if not mod.__file__: # this module is builtin, so we can skip it deps.append(mod.__file__)
continue
if mod.__file__ not in deps: # grab the file itself moddir = moduledir(mod.__file__) # if it's part of a module...
deps.append(mod.__file__) if moddir and moddir not in mods: #
deps += list(pyfiles(moddir)) # ...get the whole module
moddir = moduledir(mod.__file__) # if it's part of a module... mods.append(moddir)
if moddir and moddir not in mods: #
deps += list(pyfiles(moddir)) # ...get the whole module
mods.append(moddir)
# Include some bits that the python install itself needs # Include some bits that the python install itself needs
print get_makefile_filename() print get_makefile_filename()

View File

@ -2,8 +2,7 @@
# generate udev rules for handling anaconda-specific root devices # generate udev rules for handling anaconda-specific root devices
# (just the disk-based ones - the network ones are done by netroot) # (just the disk-based ones - the network ones are done by netroot)
# import anaconda-lib for when_diskdev_appears . /lib/anaconda-lib.sh
command -v when_diskdev_appears >/dev/null || . /lib/anaconda-lib.sh
case "$root" in case "$root" in
anaconda-disk:*) anaconda-disk:*)

View File

@ -0,0 +1,27 @@
#!/bin/sh
# save-initramfs - save a copy of initramfs for shutdown/eject, if needed
command -v config_get >/dev/null || . /lib/anaconda-lib.sh
initramfs=""
# First, check to see if we can find a copy of initramfs laying around
for i in images/pxeboot/initrd.img ppc/ppc64/initrd.img images/initrd.img; do
[ -f $repodir/$i ] && initramfs=$repodir/$i && break
done
# If we didn't find an initramfs image, save a copy of it
if [ -z "$initramfs" ]; then
initramfs=/run/initramfs/initramfs-saved.cpio.gz
gzip=$(type -P pigz || type -P gzip)
# Prune out things we don't need - modules & firmware, python, overlay file
find / -xdev | \
grep -Ev 'lib/modules|lib/firmware|python|overlay|etc/ssl|fsck' | \
cpio -co 2>/dev/null | $gzip -c1 > $initramfs
fi
# Make sure dracut-shutdown.service can find the initramfs later.
mkdir -p $NEWROOT/boot
ln -s $initramfs $NEWROOT/boot/initramfs-$(uname -r).img
# NOTE: $repodir must also be somewhere under /run for this to work correctly

View File

@ -1,6 +1,8 @@
#!/bin/sh #!/bin/sh
# generate udev rules for fetching updates # generate udev rules for fetching updates
. /lib/anaconda-lib.sh
updates=$anac_updates updates=$anac_updates
[ -n "$updates" ] || return [ -n "$updates" ] || return
case $updates in case $updates in

21
anaconda/m4/codeset.m4 Normal file
View File

@ -0,0 +1,21 @@
# codeset.m4 serial 4 (gettext-0.18)
dnl Copyright (C) 2000-2002, 2006, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
AC_DEFUN([AM_LANGINFO_CODESET],
[
AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
[AC_TRY_LINK([#include <langinfo.h>],
[char* cs = nl_langinfo(CODESET); return !cs;],
[am_cv_langinfo_codeset=yes],
[am_cv_langinfo_codeset=no])
])
if test $am_cv_langinfo_codeset = yes; then
AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
[Define if you have <langinfo.h> and nl_langinfo(CODESET).])
fi
])

81
anaconda/m4/fcntl-o.m4 Normal file
View File

@ -0,0 +1,81 @@
# fcntl-o.m4 serial 1
dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl Written by Paul Eggert.
# Test whether the flags O_NOATIME and O_NOFOLLOW actually work.
# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise.
# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise.
AC_DEFUN([gl_FCNTL_O_FLAGS],
[
dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
[AC_RUN_IFELSE(
[AC_LANG_PROGRAM(
[[#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#ifndef O_NOATIME
#define O_NOATIME 0
#endif
#ifndef O_NOFOLLOW
#define O_NOFOLLOW 0
#endif
static int const constants[] =
{
O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
};
]],
[[
int status = !constants;
{
static char const sym[] = "conftest.sym";
if (symlink (".", sym) != 0
|| close (open (sym, O_RDONLY | O_NOFOLLOW)) == 0)
status |= 32;
unlink (sym);
}
{
static char const file[] = "confdefs.h";
int fd = open (file, O_RDONLY | O_NOATIME);
char c;
struct stat st0, st1;
if (fd < 0
|| fstat (fd, &st0) != 0
|| sleep (1) != 0
|| read (fd, &c, 1) != 1
|| close (fd) != 0
|| stat (file, &st1) != 0
|| st0.st_atime != st1.st_atime)
status |= 64;
}
return status;]])],
[gl_cv_header_working_fcntl_h=yes],
[case $? in #(
32) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
96) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
*) gl_cv_header_working_fcntl_h='no';;
esac],
[gl_cv_header_working_fcntl_h=cross-compiling])])
case $gl_cv_header_working_fcntl_h in #(
*O_NOATIME* | no | cross-compiling) ac_val=0;; #(
*) ac_val=1;;
esac
AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
[Define to 1 if O_NOATIME works.])
case $gl_cv_header_working_fcntl_h in #(
*O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
*) ac_val=1;;
esac
AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
[Define to 1 if O_NOFOLLOW works.])
])

View File

@ -1,5 +1,5 @@
# gettext.m4 serial 60 (gettext-0.17) # gettext.m4 serial 63 (gettext-0.18)
dnl Copyright (C) 1995-2007 Free Software Foundation, Inc. dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it, dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved. dnl with or without modifications, as long as this notice is preserved.
@ -15,7 +15,7 @@ dnl They are *not* in the public domain.
dnl Authors: dnl Authors:
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006. dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
dnl Macro to add for using GNU gettext. dnl Macro to add for using GNU gettext.
@ -60,6 +60,8 @@ AC_DEFUN([AM_GNU_GETTEXT],
ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
[errprint([ERROR: invalid first argument to AM_GNU_GETTEXT [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
])])])])]) ])])])])])
ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
[AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
[errprint([ERROR: invalid second argument to AM_GNU_GETTEXT [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
])])])]) ])])])])
@ -123,11 +125,11 @@ AC_DEFUN([AM_GNU_GETTEXT],
gt_use_preinstalled_gnugettext=no gt_use_preinstalled_gnugettext=no
ifelse(gt_included_intl, yes, [ ifelse(gt_included_intl, yes, [
AC_MSG_CHECKING([whether included gettext is requested]) AC_MSG_CHECKING([whether included gettext is requested])
AC_ARG_WITH(included-gettext, AC_ARG_WITH([included-gettext],
[ --with-included-gettext use the GNU gettext library included here], [ --with-included-gettext use the GNU gettext library included here],
nls_cv_force_use_gnu_gettext=$withval, nls_cv_force_use_gnu_gettext=$withval,
nls_cv_force_use_gnu_gettext=no) nls_cv_force_use_gnu_gettext=no)
AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
@ -267,7 +269,7 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
if test "$gt_use_preinstalled_gnugettext" = "yes" \ if test "$gt_use_preinstalled_gnugettext" = "yes" \
|| test "$nls_cv_use_gnu_gettext" = "yes"; then || test "$nls_cv_use_gnu_gettext" = "yes"; then
AC_DEFINE(ENABLE_NLS, 1, AC_DEFINE([ENABLE_NLS], [1],
[Define to 1 if translation of program messages to the user's native language [Define to 1 if translation of program messages to the user's native language
is requested.]) is requested.])
else else
@ -301,9 +303,9 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
fi fi
dnl For backward compatibility. Some packages may be using this. dnl For backward compatibility. Some packages may be using this.
AC_DEFINE(HAVE_GETTEXT, 1, AC_DEFINE([HAVE_GETTEXT], [1],
[Define if the GNU gettext() function is already present or preinstalled.]) [Define if the GNU gettext() function is already present or preinstalled.])
AC_DEFINE(HAVE_DCGETTEXT, 1, AC_DEFINE([HAVE_DCGETTEXT], [1],
[Define if the GNU dcgettext() function is already present or preinstalled.]) [Define if the GNU dcgettext() function is already present or preinstalled.])
fi fi
@ -319,9 +321,9 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
fi fi
dnl Make all variables we use known to autoconf. dnl Make all variables we use known to autoconf.
AC_SUBST(BUILD_INCLUDED_LIBINTL) AC_SUBST([BUILD_INCLUDED_LIBINTL])
AC_SUBST(USE_INCLUDED_LIBINTL) AC_SUBST([USE_INCLUDED_LIBINTL])
AC_SUBST(CATOBJEXT) AC_SUBST([CATOBJEXT])
dnl For backward compatibility. Some configure.ins may be using this. dnl For backward compatibility. Some configure.ins may be using this.
nls_cv_header_intl= nls_cv_header_intl=
@ -329,36 +331,36 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
dnl For backward compatibility. Some Makefiles may be using this. dnl For backward compatibility. Some Makefiles may be using this.
DATADIRNAME=share DATADIRNAME=share
AC_SUBST(DATADIRNAME) AC_SUBST([DATADIRNAME])
dnl For backward compatibility. Some Makefiles may be using this. dnl For backward compatibility. Some Makefiles may be using this.
INSTOBJEXT=.mo INSTOBJEXT=.mo
AC_SUBST(INSTOBJEXT) AC_SUBST([INSTOBJEXT])
dnl For backward compatibility. Some Makefiles may be using this. dnl For backward compatibility. Some Makefiles may be using this.
GENCAT=gencat GENCAT=gencat
AC_SUBST(GENCAT) AC_SUBST([GENCAT])
dnl For backward compatibility. Some Makefiles may be using this. dnl For backward compatibility. Some Makefiles may be using this.
INTLOBJS= INTLOBJS=
if test "$USE_INCLUDED_LIBINTL" = yes; then if test "$USE_INCLUDED_LIBINTL" = yes; then
INTLOBJS="\$(GETTOBJS)" INTLOBJS="\$(GETTOBJS)"
fi fi
AC_SUBST(INTLOBJS) AC_SUBST([INTLOBJS])
dnl Enable libtool support if the surrounding package wishes it. dnl Enable libtool support if the surrounding package wishes it.
INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
]) ])
dnl For backward compatibility. Some Makefiles may be using this. dnl For backward compatibility. Some Makefiles may be using this.
INTLLIBS="$LIBINTL" INTLLIBS="$LIBINTL"
AC_SUBST(INTLLIBS) AC_SUBST([INTLLIBS])
dnl Make all documented variables known to autoconf. dnl Make all documented variables known to autoconf.
AC_SUBST(LIBINTL) AC_SUBST([LIBINTL])
AC_SUBST(LTLIBINTL) AC_SUBST([LTLIBINTL])
AC_SUBST(POSUB) AC_SUBST([POSUB])
]) ])

30
anaconda/m4/glibc2.m4 Normal file
View File

@ -0,0 +1,30 @@
# glibc2.m4 serial 2
dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
# Test for the GNU C Library, version 2.0 or newer.
# From Bruno Haible.
AC_DEFUN([gt_GLIBC2],
[
AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer],
[ac_cv_gnu_library_2],
[AC_EGREP_CPP([Lucky GNU user],
[
#include <features.h>
#ifdef __GNU_LIBRARY__
#if (__GLIBC__ >= 2)
Lucky GNU user
#endif
#endif
],
[ac_cv_gnu_library_2=yes],
[ac_cv_gnu_library_2=no])
]
)
AC_SUBST([GLIBC2])
GLIBC2="$ac_cv_gnu_library_2"
]
)

30
anaconda/m4/glibc21.m4 Normal file
View File

@ -0,0 +1,30 @@
# glibc21.m4 serial 4
dnl Copyright (C) 2000-2002, 2004, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
# Test for the GNU C Library, version 2.1 or newer.
# From Bruno Haible.
AC_DEFUN([gl_GLIBC21],
[
AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer],
[ac_cv_gnu_library_2_1],
[AC_EGREP_CPP([Lucky GNU user],
[
#include <features.h>
#ifdef __GNU_LIBRARY__
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
Lucky GNU user
#endif
#endif
],
[ac_cv_gnu_library_2_1=yes],
[ac_cv_gnu_library_2_1=no])
]
)
AC_SUBST([GLIBC21])
GLIBC21="$ac_cv_gnu_library_2_1"
]
)

View File

@ -1,5 +1,5 @@
# iconv.m4 serial AM6 (gettext-0.17) # iconv.m4 serial 11 (gettext-0.18.1)
dnl Copyright (C) 2000-2002, 2007 Free Software Foundation, Inc. dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it, dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved. dnl with or without modifications, as long as this notice is preserved.
@ -34,7 +34,7 @@ AC_DEFUN([AM_ICONV_LINK],
am_save_CPPFLAGS="$CPPFLAGS" am_save_CPPFLAGS="$CPPFLAGS"
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [ AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
am_cv_func_iconv="no, consider installing GNU libiconv" am_cv_func_iconv="no, consider installing GNU libiconv"
am_cv_lib_iconv=no am_cv_lib_iconv=no
AC_TRY_LINK([#include <stdlib.h> AC_TRY_LINK([#include <stdlib.h>
@ -42,7 +42,7 @@ AC_DEFUN([AM_ICONV_LINK],
[iconv_t cd = iconv_open("",""); [iconv_t cd = iconv_open("","");
iconv(cd,NULL,NULL,NULL,NULL); iconv(cd,NULL,NULL,NULL,NULL);
iconv_close(cd);], iconv_close(cd);],
am_cv_func_iconv=yes) [am_cv_func_iconv=yes])
if test "$am_cv_func_iconv" != yes; then if test "$am_cv_func_iconv" != yes; then
am_save_LIBS="$LIBS" am_save_LIBS="$LIBS"
LIBS="$LIBS $LIBICONV" LIBS="$LIBS $LIBICONV"
@ -51,14 +51,14 @@ AC_DEFUN([AM_ICONV_LINK],
[iconv_t cd = iconv_open("",""); [iconv_t cd = iconv_open("","");
iconv(cd,NULL,NULL,NULL,NULL); iconv(cd,NULL,NULL,NULL,NULL);
iconv_close(cd);], iconv_close(cd);],
am_cv_lib_iconv=yes [am_cv_lib_iconv=yes]
am_cv_func_iconv=yes) [am_cv_func_iconv=yes])
LIBS="$am_save_LIBS" LIBS="$am_save_LIBS"
fi fi
]) ])
if test "$am_cv_func_iconv" = yes; then if test "$am_cv_func_iconv" = yes; then
AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [ AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
dnl This tests against bugs in AIX 5.1 and HP-UX 11.11. dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
am_save_LIBS="$LIBS" am_save_LIBS="$LIBS"
if test $am_cv_lib_iconv = yes; then if test $am_cv_lib_iconv = yes; then
LIBS="$LIBS $LIBICONV" LIBS="$LIBS $LIBICONV"
@ -87,6 +87,25 @@ int main ()
return 1; return 1;
} }
} }
/* Test against Solaris 10 bug: Failures are not distinguishable from
successful returns. */
{
iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
if (cd_ascii_to_88591 != (iconv_t)(-1))
{
static const char input[] = "\263";
char buf[10];
const char *inptr = input;
size_t inbytesleft = strlen (input);
char *outptr = buf;
size_t outbytesleft = sizeof (buf);
size_t res = iconv (cd_ascii_to_88591,
(char **) &inptr, &inbytesleft,
&outptr, &outbytesleft);
if (res == 0)
return 1;
}
}
#if 0 /* This bug could be worked around by the caller. */ #if 0 /* This bug could be worked around by the caller. */
/* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
{ {
@ -134,7 +153,7 @@ int main ()
am_func_iconv=no am_cv_lib_iconv=no am_func_iconv=no am_cv_lib_iconv=no
fi fi
if test "$am_func_iconv" = yes; then if test "$am_func_iconv" = yes; then
AC_DEFINE(HAVE_ICONV, 1, AC_DEFINE([HAVE_ICONV], [1],
[Define if you have the iconv() function and it works.]) [Define if you have the iconv() function and it works.])
fi fi
if test "$am_cv_lib_iconv" = yes; then if test "$am_cv_lib_iconv" = yes; then
@ -147,16 +166,31 @@ int main ()
LIBICONV= LIBICONV=
LTLIBICONV= LTLIBICONV=
fi fi
AC_SUBST(LIBICONV) AC_SUBST([LIBICONV])
AC_SUBST(LTLIBICONV) AC_SUBST([LTLIBICONV])
]) ])
AC_DEFUN([AM_ICONV], dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
dnl avoid warnings like
dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
dnl This is tricky because of the way 'aclocal' is implemented:
dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
dnl Otherwise aclocal's initial scan pass would miss the macro definition.
dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
dnl warnings.
m4_define([gl_iconv_AC_DEFUN],
m4_version_prereq([2.64],
[[AC_DEFUN_ONCE(
[$1], [$2])]],
[[AC_DEFUN(
[$1], [$2])]]))
gl_iconv_AC_DEFUN([AM_ICONV],
[ [
AM_ICONV_LINK AM_ICONV_LINK
if test "$am_cv_func_iconv" = yes; then if test "$am_cv_func_iconv" = yes; then
AC_MSG_CHECKING([for iconv declaration]) AC_MSG_CHECKING([for iconv declaration])
AC_CACHE_VAL(am_cv_proto_iconv, [ AC_CACHE_VAL([am_cv_proto_iconv], [
AC_TRY_COMPILE([ AC_TRY_COMPILE([
#include <stdlib.h> #include <stdlib.h>
#include <iconv.h> #include <iconv.h>
@ -169,12 +203,12 @@ size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, si
#else #else
size_t iconv(); size_t iconv();
#endif #endif
], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") ], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
AC_MSG_RESULT([$]{ac_t:- AC_MSG_RESULT([
}[$]am_cv_proto_iconv) $am_cv_proto_iconv])
AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
[Define as const if the declaration of iconv() needs const.]) [Define as const if the declaration of iconv() needs const.])
fi fi
]) ])

84
anaconda/m4/intdiv0.m4 Normal file
View File

@ -0,0 +1,84 @@
# intdiv0.m4 serial 3 (gettext-0.18)
dnl Copyright (C) 2002, 2007-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
AC_DEFUN([gt_INTDIV0],
[
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_CANONICAL_HOST])dnl
AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
gt_cv_int_divbyzero_sigfpe,
[
gt_cv_int_divbyzero_sigfpe=
changequote(,)dnl
case "$host_os" in
macos* | darwin[6-9]* | darwin[1-9][0-9]*)
# On MacOS X 10.2 or newer, just assume the same as when cross-
# compiling. If we were to perform the real test, 1 Crash Report
# dialog window would pop up.
case "$host_cpu" in
i[34567]86 | x86_64)
gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
esac
;;
esac
changequote([,])dnl
if test -z "$gt_cv_int_divbyzero_sigfpe"; then
AC_TRY_RUN([
#include <stdlib.h>
#include <signal.h>
static void
sigfpe_handler (int sig)
{
/* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
exit (sig != SIGFPE);
}
int x = 1;
int y = 0;
int z;
int nan;
int main ()
{
signal (SIGFPE, sigfpe_handler);
/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
signal (SIGTRAP, sigfpe_handler);
#endif
/* Linux/SPARC yields signal SIGILL. */
#if defined (__sparc__) && defined (__linux__)
signal (SIGILL, sigfpe_handler);
#endif
z = x / y;
nan = y / y;
exit (1);
}
], [gt_cv_int_divbyzero_sigfpe=yes], [gt_cv_int_divbyzero_sigfpe=no],
[
# Guess based on the CPU.
changequote(,)dnl
case "$host_cpu" in
alpha* | i[34567]86 | x86_64 | m68k | s390*)
gt_cv_int_divbyzero_sigfpe="guessing yes";;
*)
gt_cv_int_divbyzero_sigfpe="guessing no";;
esac
changequote([,])dnl
])
fi
])
case "$gt_cv_int_divbyzero_sigfpe" in
*yes) value=1;;
*) value=0;;
esac
AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value],
[Define if integer division by zero raises signal SIGFPE.])
])

294
anaconda/m4/intl.m4 Normal file
View File

@ -0,0 +1,294 @@
# intl.m4 serial 17 (gettext-0.18)
dnl Copyright (C) 1995-2009 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl
dnl This file can can be used in projects which are not available under
dnl the GNU General Public License or the GNU Library General Public
dnl License but which still want to provide support for the GNU gettext
dnl functionality.
dnl Please note that the actual code of the GNU gettext library is covered
dnl by the GNU Library General Public License, and the rest of the GNU
dnl gettext package package is covered by the GNU General Public License.
dnl They are *not* in the public domain.
dnl Authors:
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2009.
AC_PREREQ([2.52])
dnl Checks for all prerequisites of the intl subdirectory,
dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
AC_DEFUN([AM_INTL_SUBDIR],
[
AC_REQUIRE([AC_PROG_INSTALL])dnl
AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
AC_REQUIRE([AC_PROG_CC])dnl
AC_REQUIRE([AC_CANONICAL_HOST])dnl
AC_REQUIRE([gt_GLIBC2])dnl
AC_REQUIRE([AC_PROG_RANLIB])dnl
AC_REQUIRE([gl_VISIBILITY])dnl
AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
AC_REQUIRE([gt_TYPE_WINT_T])dnl
AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
AC_REQUIRE([gt_TYPE_INTMAX_T])
AC_REQUIRE([gt_PRINTF_POSIX])
AC_REQUIRE([gl_GLIBC21])dnl
AC_REQUIRE([gl_XSIZE])dnl
AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl
AC_REQUIRE([gt_INTL_MACOSX])dnl
dnl Support for automake's --enable-silent-rules.
case "$enable_silent_rules" in
yes) INTL_DEFAULT_VERBOSITY=0;;
no) INTL_DEFAULT_VERBOSITY=1;;
*) INTL_DEFAULT_VERBOSITY=1;;
esac
AC_SUBST([INTL_DEFAULT_VERBOSITY])
AC_CHECK_TYPE([ptrdiff_t], ,
[AC_DEFINE([ptrdiff_t], [long],
[Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
])
AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
dnl Use the _snprintf function only if it is declared (because on NetBSD it
dnl is defined as a weak alias of snprintf; we prefer to use the latter).
gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
dnl Use the *_unlocked functions only if they are declared.
dnl (because some of them were defined without being declared in Solaris
dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
dnl on Solaris 2.5.1 to run on Solaris 2.6).
dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
case $gt_cv_func_printf_posix in
*yes) HAVE_POSIX_PRINTF=1 ;;
*) HAVE_POSIX_PRINTF=0 ;;
esac
AC_SUBST([HAVE_POSIX_PRINTF])
if test "$ac_cv_func_asprintf" = yes; then
HAVE_ASPRINTF=1
else
HAVE_ASPRINTF=0
fi
AC_SUBST([HAVE_ASPRINTF])
if test "$ac_cv_func_snprintf" = yes; then
HAVE_SNPRINTF=1
else
HAVE_SNPRINTF=0
fi
AC_SUBST([HAVE_SNPRINTF])
if test "$ac_cv_func_newlocale" = yes; then
HAVE_NEWLOCALE=1
else
HAVE_NEWLOCALE=0
fi
AC_SUBST([HAVE_NEWLOCALE])
if test "$ac_cv_func_wprintf" = yes; then
HAVE_WPRINTF=1
else
HAVE_WPRINTF=0
fi
AC_SUBST([HAVE_WPRINTF])
AM_LANGINFO_CODESET
gt_LC_MESSAGES
dnl Compilation on mingw and Cygwin needs special Makefile rules, because
dnl 1. when we install a shared library, we must arrange to export
dnl auxiliary pointer variables for every exported variable,
dnl 2. when we install a shared library and a static library simultaneously,
dnl the include file specifies __declspec(dllimport) and therefore we
dnl must arrange to define the auxiliary pointer variables for the
dnl exported variables _also_ in the static library.
if test "$enable_shared" = yes; then
case "$host_os" in
mingw* | cygwin*) is_woe32dll=yes ;;
*) is_woe32dll=no ;;
esac
else
is_woe32dll=no
fi
WOE32DLL=$is_woe32dll
AC_SUBST([WOE32DLL])
dnl On mingw and Cygwin, we can activate special Makefile rules which add
dnl version information to the shared libraries and executables.
case "$host_os" in
mingw* | cygwin*) is_woe32=yes ;;
*) is_woe32=no ;;
esac
WOE32=$is_woe32
AC_SUBST([WOE32])
if test $WOE32 = yes; then
dnl Check for a program that compiles Windows resource files.
AC_CHECK_TOOL([WINDRES], [windres])
fi
dnl Determine whether when creating a library, "-lc" should be passed to
dnl libtool or not. On many platforms, it is required for the libtool option
dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool
dnl in the *.la files - makes it impossible to create multithreaded programs,
dnl because libtool also reorders the -lc to come before the -pthread, and
dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>.
case "$host_os" in
hpux*) LTLIBC="" ;;
*) LTLIBC="-lc" ;;
esac
AC_SUBST([LTLIBC])
dnl Rename some macros and functions used for locking.
AH_BOTTOM([
#define __libc_lock_t gl_lock_t
#define __libc_lock_define gl_lock_define
#define __libc_lock_define_initialized gl_lock_define_initialized
#define __libc_lock_init gl_lock_init
#define __libc_lock_lock gl_lock_lock
#define __libc_lock_unlock gl_lock_unlock
#define __libc_lock_recursive_t gl_recursive_lock_t
#define __libc_lock_define_recursive gl_recursive_lock_define
#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized
#define __libc_lock_init_recursive gl_recursive_lock_init
#define __libc_lock_lock_recursive gl_recursive_lock_lock
#define __libc_lock_unlock_recursive gl_recursive_lock_unlock
#define glthread_in_use libintl_thread_in_use
#define glthread_lock_init_func libintl_lock_init_func
#define glthread_lock_lock_func libintl_lock_lock_func
#define glthread_lock_unlock_func libintl_lock_unlock_func
#define glthread_lock_destroy_func libintl_lock_destroy_func
#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded
#define glthread_rwlock_init_func libintl_rwlock_init_func
#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded
#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func
#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded
#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func
#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded
#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func
#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded
#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func
#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded
#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func
#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded
#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func
#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded
#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func
#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded
#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func
#define glthread_once_func libintl_once_func
#define glthread_once_singlethreaded libintl_once_singlethreaded
#define glthread_once_multithreaded libintl_once_multithreaded
])
])
dnl Checks for the core files of the intl subdirectory:
dnl dcigettext.c
dnl eval-plural.h
dnl explodename.c
dnl finddomain.c
dnl gettextP.h
dnl gmo.h
dnl hash-string.h hash-string.c
dnl l10nflist.c
dnl libgnuintl.h.in (except the *printf stuff)
dnl loadinfo.h
dnl loadmsgcat.c
dnl localealias.c
dnl log.c
dnl plural-exp.h plural-exp.c
dnl plural.y
dnl Used by libglocale.
AC_DEFUN([gt_INTL_SUBDIR_CORE],
[
AC_REQUIRE([AC_C_INLINE])dnl
AC_REQUIRE([AC_TYPE_SIZE_T])dnl
AC_REQUIRE([gl_AC_HEADER_STDINT_H])
AC_REQUIRE([AC_FUNC_ALLOCA])dnl
AC_REQUIRE([AC_FUNC_MMAP])dnl
AC_REQUIRE([gt_INTDIV0])dnl
AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
AC_REQUIRE([gt_INTTYPES_PRI])dnl
AC_REQUIRE([gl_LOCK])dnl
AC_TRY_LINK(
[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }],
[],
[AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
[Define to 1 if the compiler understands __builtin_expect.])])
AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \
argz_stringify argz_next __fsetlocking])
dnl Use the *_unlocked functions only if they are declared.
dnl (because some of them were defined without being declared in Solaris
dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
dnl on Solaris 2.5.1 to run on Solaris 2.6).
dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
gt_CHECK_DECL([feof_unlocked], [#include <stdio.h>])
gt_CHECK_DECL([fgets_unlocked], [#include <stdio.h>])
AM_ICONV
dnl intl/plural.c is generated from intl/plural.y. It requires bison,
dnl because plural.y uses bison specific features. It requires at least
dnl bison-1.26 because earlier versions generate a plural.c that doesn't
dnl compile.
dnl bison is only needed for the maintainer (who touches plural.y). But in
dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
dnl the rule in general Makefile. Now, some people carelessly touch the
dnl files or have a broken "make" program, hence the plural.c rule will
dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
dnl present or too old.
AC_CHECK_PROGS([INTLBISON], [bison])
if test -z "$INTLBISON"; then
ac_verc_fail=yes
else
dnl Found it, now check the version.
AC_MSG_CHECKING([version of bison])
changequote(<<,>>)dnl
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
case $ac_prog_version in
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
changequote([,])dnl
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
esac
AC_MSG_RESULT([$ac_prog_version])
fi
if test $ac_verc_fail = yes; then
INTLBISON=:
fi
])
dnl gt_CHECK_DECL(FUNC, INCLUDES)
dnl Check whether a function is declared.
AC_DEFUN([gt_CHECK_DECL],
[
AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1],
[AC_TRY_COMPILE([$2], [
#ifndef $1
char *p = (char *) $1;
#endif
], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
if test $ac_cv_have_decl_$1 = yes; then
gt_value=1
else
gt_value=0
fi
AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
[Define to 1 if you have the declaration of `$1', and to 0 if you don't.])
])

View File

@ -1,6 +1,5 @@
# nls.m4 serial 5 (gettext-0.18) # intldir.m4 serial 2 (gettext-0.18)
dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation, dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
dnl Inc.
dnl This file is free software; the Free Software Foundation dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it, dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved. dnl with or without modifications, as long as this notice is preserved.
@ -14,19 +13,7 @@ dnl by the GNU Library General Public License, and the rest of the GNU
dnl gettext package package is covered by the GNU General Public License. dnl gettext package package is covered by the GNU General Public License.
dnl They are *not* in the public domain. dnl They are *not* in the public domain.
dnl Authors: AC_PREREQ([2.52])
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
AC_PREREQ([2.50]) dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory.
AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], [])
AC_DEFUN([AM_NLS],
[
AC_MSG_CHECKING([whether NLS is requested])
dnl Default is enabled NLS
AC_ARG_ENABLE([nls],
[ --disable-nls do not use Native Language Support],
USE_NLS=$enableval, USE_NLS=yes)
AC_MSG_RESULT([$USE_NLS])
AC_SUBST([USE_NLS])
])

51
anaconda/m4/intlmacosx.m4 Normal file
View File

@ -0,0 +1,51 @@
# intlmacosx.m4 serial 3 (gettext-0.18)
dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl
dnl This file can can be used in projects which are not available under
dnl the GNU General Public License or the GNU Library General Public
dnl License but which still want to provide support for the GNU gettext
dnl functionality.
dnl Please note that the actual code of the GNU gettext library is covered
dnl by the GNU Library General Public License, and the rest of the GNU
dnl gettext package package is covered by the GNU General Public License.
dnl They are *not* in the public domain.
dnl Checks for special options needed on MacOS X.
dnl Defines INTL_MACOSX_LIBS.
AC_DEFUN([gt_INTL_MACOSX],
[
dnl Check for API introduced in MacOS X 10.2.
AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
[gt_cv_func_CFPreferencesCopyAppValue],
[gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
[CFPreferencesCopyAppValue(NULL, NULL)],
[gt_cv_func_CFPreferencesCopyAppValue=yes],
[gt_cv_func_CFPreferencesCopyAppValue=no])
LIBS="$gt_save_LIBS"])
if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
[Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
fi
dnl Check for API introduced in MacOS X 10.3.
AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
[gt_save_LIBS="$LIBS"
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
[gt_cv_func_CFLocaleCopyCurrent=yes],
[gt_cv_func_CFLocaleCopyCurrent=no])
LIBS="$gt_save_LIBS"])
if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
[Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
fi
INTL_MACOSX_LIBS=
if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
fi
AC_SUBST([INTL_MACOSX_LIBS])
])

33
anaconda/m4/intmax.m4 Normal file
View File

@ -0,0 +1,33 @@
# intmax.m4 serial 5 (gettext-0.18)
dnl Copyright (C) 2002-2005, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
dnl Test whether the system has the 'intmax_t' type, but don't attempt to
dnl find a replacement if it is lacking.
AC_DEFUN([gt_TYPE_INTMAX_T],
[
AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
AC_REQUIRE([gl_AC_HEADER_STDINT_H])
AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
[AC_TRY_COMPILE([
#include <stddef.h>
#include <stdlib.h>
#if HAVE_STDINT_H_WITH_UINTMAX
#include <stdint.h>
#endif
#if HAVE_INTTYPES_H_WITH_UINTMAX
#include <inttypes.h>
#endif
], [intmax_t x = -1;
return !x;],
[gt_cv_c_intmax_t=yes],
[gt_cv_c_intmax_t=no])])
if test $gt_cv_c_intmax_t = yes; then
AC_DEFINE([HAVE_INTMAX_T], [1],
[Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
fi
])

View File

@ -0,0 +1,36 @@
# inttypes-pri.m4 serial 6 (gettext-0.18)
dnl Copyright (C) 1997-2002, 2006, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
AC_PREREQ([2.52])
# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
# macros to non-string values. This is the case on AIX 4.3.3.
AC_DEFUN([gt_INTTYPES_PRI],
[
AC_CHECK_HEADERS([inttypes.h])
if test $ac_cv_header_inttypes_h = yes; then
AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
[gt_cv_inttypes_pri_broken],
[
AC_TRY_COMPILE([#include <inttypes.h>
#ifdef PRId32
char *p = PRId32;
#endif
], [], [gt_cv_inttypes_pri_broken=no], [gt_cv_inttypes_pri_broken=yes])
])
fi
if test "$gt_cv_inttypes_pri_broken" = yes; then
AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
[Define if <inttypes.h> exists and defines unusable PRI* macros.])
PRI_MACROS_BROKEN=1
else
PRI_MACROS_BROKEN=0
fi
AC_SUBST([PRI_MACROS_BROKEN])
])

26
anaconda/m4/inttypes_h.m4 Normal file
View File

@ -0,0 +1,26 @@
# inttypes_h.m4 serial 9
dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Paul Eggert.
# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
# doesn't clash with <sys/types.h>, and declares uintmax_t.
AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
[
AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
[AC_TRY_COMPILE(
[#include <sys/types.h>
#include <inttypes.h>],
[uintmax_t i = (uintmax_t) -1; return !i;],
[gl_cv_header_inttypes_h=yes],
[gl_cv_header_inttypes_h=no])])
if test $gl_cv_header_inttypes_h = yes; then
AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
[Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
and declares uintmax_t. ])
fi
])

31
anaconda/m4/lcmessage.m4 Normal file
View File

@ -0,0 +1,31 @@
# lcmessage.m4 serial 6 (gettext-0.18)
dnl Copyright (C) 1995-2002, 2004-2005, 2008-2010 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl
dnl This file can can be used in projects which are not available under
dnl the GNU General Public License or the GNU Library General Public
dnl License but which still want to provide support for the GNU gettext
dnl functionality.
dnl Please note that the actual code of the GNU gettext library is covered
dnl by the GNU Library General Public License, and the rest of the GNU
dnl gettext package package is covered by the GNU General Public License.
dnl They are *not* in the public domain.
dnl Authors:
dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
# Check whether LC_MESSAGES is available in <locale.h>.
AC_DEFUN([gt_LC_MESSAGES],
[
AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES],
[AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
[gt_cv_val_LC_MESSAGES=yes], [gt_cv_val_LC_MESSAGES=no])])
if test $gt_cv_val_LC_MESSAGES = yes; then
AC_DEFINE([HAVE_LC_MESSAGES], [1],
[Define if your <locale.h> file defines LC_MESSAGES.])
fi
])

View File

@ -1,5 +1,5 @@
# lib-ld.m4 serial 3 (gettext-0.13) # lib-ld.m4 serial 4 (gettext-0.18)
dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it, dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved. dnl with or without modifications, as long as this notice is preserved.
@ -10,7 +10,7 @@ dnl with libtool.m4.
dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
AC_DEFUN([AC_LIB_PROG_LD_GNU], AC_DEFUN([AC_LIB_PROG_LD_GNU],
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
[# I'd rather use --version here, but apparently some GNU ld's only accept -v. [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
case `$LD -v 2>&1 </dev/null` in case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*) *GNU* | *'with BFD'*)
@ -23,7 +23,7 @@ with_gnu_ld=$acl_cv_prog_gnu_ld
dnl From libtool-1.4. Sets the variable LD. dnl From libtool-1.4. Sets the variable LD.
AC_DEFUN([AC_LIB_PROG_LD], AC_DEFUN([AC_LIB_PROG_LD],
[AC_ARG_WITH(gnu-ld, [AC_ARG_WITH([gnu-ld],
[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], [ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_CC])dnl
@ -59,7 +59,7 @@ if test "$GCC" = yes; then
# Canonicalize the path of ld # Canonicalize the path of ld
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
done done
test -z "$LD" && LD="$ac_prog" test -z "$LD" && LD="$ac_prog"
;; ;;
@ -77,7 +77,7 @@ elif test "$with_gnu_ld" = yes; then
else else
AC_MSG_CHECKING([for non-GNU ld]) AC_MSG_CHECKING([for non-GNU ld])
fi fi
AC_CACHE_VAL(acl_cv_path_LD, AC_CACHE_VAL([acl_cv_path_LD],
[if test -z "$LD"; then [if test -z "$LD"; then
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
for ac_dir in $PATH; do for ac_dir in $PATH; do
@ -89,9 +89,9 @@ AC_CACHE_VAL(acl_cv_path_LD,
# Break only if it was the GNU/non-GNU ld that we prefer. # Break only if it was the GNU/non-GNU ld that we prefer.
case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
*GNU* | *'with BFD'*) *GNU* | *'with BFD'*)
test "$with_gnu_ld" != no && break ;; test "$with_gnu_ld" != no && break ;;
*) *)
test "$with_gnu_ld" != yes && break ;; test "$with_gnu_ld" != yes && break ;;
esac esac
fi fi
done done
@ -101,9 +101,9 @@ else
fi]) fi])
LD="$acl_cv_path_LD" LD="$acl_cv_path_LD"
if test -n "$LD"; then if test -n "$LD"; then
AC_MSG_RESULT($LD) AC_MSG_RESULT([$LD])
else else
AC_MSG_RESULT(no) AC_MSG_RESULT([no])
fi fi
test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
AC_LIB_PROG_LD_GNU AC_LIB_PROG_LD_GNU

View File

@ -1,12 +1,12 @@
# lib-link.m4 serial 13 (gettext-0.17) # lib-link.m4 serial 21 (gettext-0.18)
dnl Copyright (C) 2001-2007 Free Software Foundation, Inc. dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it, dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved. dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible. dnl From Bruno Haible.
AC_PREREQ(2.54) AC_PREREQ([2.54])
dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
dnl the libraries corresponding to explicit and implicit dependencies. dnl the libraries corresponding to explicit and implicit dependencies.
@ -18,9 +18,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS],
[ [
AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_RPATH])
define([Name],[translit([$1],[./-], [___])]) pushdef([Name],[translit([$1],[./-], [___])])
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
AC_LIB_LINKFLAGS_BODY([$1], [$2]) AC_LIB_LINKFLAGS_BODY([$1], [$2])
ac_cv_lib[]Name[]_libs="$LIB[]NAME" ac_cv_lib[]Name[]_libs="$LIB[]NAME"
@ -39,16 +39,17 @@ AC_DEFUN([AC_LIB_LINKFLAGS],
dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
dnl results of this search when this library appears as a dependency. dnl results of this search when this library appears as a dependency.
HAVE_LIB[]NAME=yes HAVE_LIB[]NAME=yes
undefine([Name]) popdef([NAME])
undefine([NAME]) popdef([Name])
]) ])
dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
dnl searches for libname and the libraries corresponding to explicit and dnl searches for libname and the libraries corresponding to explicit and
dnl implicit dependencies, together with the specified include files and dnl implicit dependencies, together with the specified include files and
dnl the ability to compile and link the specified testcode. If found, it dnl the ability to compile and link the specified testcode. The missing-message
dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and dnl defaults to 'no' and may contain additional hints for the user.
dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
@ -57,9 +58,9 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
[ [
AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
AC_REQUIRE([AC_LIB_RPATH]) AC_REQUIRE([AC_LIB_RPATH])
define([Name],[translit([$1],[./-], [___])]) pushdef([Name],[translit([$1],[./-], [___])])
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
dnl accordingly. dnl accordingly.
@ -73,13 +74,25 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
ac_save_LIBS="$LIBS" ac_save_LIBS="$LIBS"
LIBS="$LIBS $LIB[]NAME" dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) dnl because these -l options might require -L options that are present in
dnl LIBS. -l options benefit only from the -L options listed before it.
dnl Otherwise, add it to the front of LIBS, because it may be a static
dnl library that depends on another static library that is present in LIBS.
dnl Static libraries benefit only from the static libraries listed after
dnl it.
case " $LIB[]NAME" in
*" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
*) LIBS="$LIB[]NAME $LIBS" ;;
esac
AC_TRY_LINK([$3], [$4],
[ac_cv_lib[]Name=yes],
[ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
LIBS="$ac_save_LIBS" LIBS="$ac_save_LIBS"
]) ])
if test "$ac_cv_lib[]Name" = yes; then if test "$ac_cv_lib[]Name" = yes; then
HAVE_LIB[]NAME=yes HAVE_LIB[]NAME=yes
AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
AC_MSG_CHECKING([how to link with lib[]$1]) AC_MSG_CHECKING([how to link with lib[]$1])
AC_MSG_RESULT([$LIB[]NAME]) AC_MSG_RESULT([$LIB[]NAME])
else else
@ -95,8 +108,8 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
AC_SUBST([LIB]NAME) AC_SUBST([LIB]NAME)
AC_SUBST([LTLIB]NAME) AC_SUBST([LTLIB]NAME)
AC_SUBST([LIB]NAME[_PREFIX]) AC_SUBST([LIB]NAME[_PREFIX])
undefine([Name]) popdef([NAME])
undefine([NAME]) popdef([Name])
]) ])
dnl Determine the platform dependent parameters needed to use rpath: dnl Determine the platform dependent parameters needed to use rpath:
@ -114,7 +127,7 @@ AC_DEFUN([AC_LIB_RPATH],
AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
. ./conftest.sh . ./conftest.sh
@ -131,11 +144,32 @@ AC_DEFUN([AC_LIB_RPATH],
acl_hardcode_direct="$acl_cv_hardcode_direct" acl_hardcode_direct="$acl_cv_hardcode_direct"
acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
dnl Determine whether the user wants rpath handling at all. dnl Determine whether the user wants rpath handling at all.
AC_ARG_ENABLE(rpath, AC_ARG_ENABLE([rpath],
[ --disable-rpath do not hardcode runtime library paths], [ --disable-rpath do not hardcode runtime library paths],
:, enable_rpath=yes) :, enable_rpath=yes)
]) ])
dnl AC_LIB_FROMPACKAGE(name, package)
dnl declares that libname comes from the given package. The configure file
dnl will then not have a --with-libname-prefix option but a
dnl --with-package-prefix option. Several libraries can come from the same
dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
dnl macro call that searches for libname.
AC_DEFUN([AC_LIB_FROMPACKAGE],
[
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
define([acl_frompackage_]NAME, [$2])
popdef([NAME])
pushdef([PACK],[$2])
pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
define([acl_libsinpackage_]PACKUP,
m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
popdef([PACKUP])
popdef([PACK])
])
dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
dnl the libraries corresponding to explicit and implicit dependencies. dnl the libraries corresponding to explicit and implicit dependencies.
dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
@ -144,19 +178,23 @@ dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
AC_DEFUN([AC_LIB_LINKFLAGS_BODY], AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
[ [
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
dnl Autoconf >= 2.61 supports dots in --with options. dnl Autoconf >= 2.61 supports dots in --with options.
define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])]) pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
dnl By default, look in $includedir and $libdir. dnl By default, look in $includedir and $libdir.
use_additional=yes use_additional=yes
AC_LIB_WITH_FINAL_PREFIX([ AC_LIB_WITH_FINAL_PREFIX([
eval additional_includedir=\"$includedir\" eval additional_includedir=\"$includedir\"
eval additional_libdir=\"$libdir\" eval additional_libdir=\"$libdir\"
]) ])
AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix], AC_ARG_WITH(P_A_C_K[-prefix],
[ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib [[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
--without-lib]N_A_M_E[-prefix don't search for lib$1 in includedir and libdir], --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
[ [
if test "X$withval" = "Xno"; then if test "X$withval" = "Xno"; then
use_additional=no use_additional=no
@ -169,6 +207,10 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
else else
additional_includedir="$withval/include" additional_includedir="$withval/include"
additional_libdir="$withval/$acl_libdirstem" additional_libdir="$withval/$acl_libdirstem"
if test "$acl_libdirstem2" != "$acl_libdirstem" \
&& ! test -d "$withval/$acl_libdirstem"; then
additional_libdir="$withval/$acl_libdirstem2"
fi
fi fi
fi fi
]) ])
@ -178,6 +220,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
LTLIB[]NAME= LTLIB[]NAME=
INC[]NAME= INC[]NAME=
LIB[]NAME[]_PREFIX= LIB[]NAME[]_PREFIX=
dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
dnl computed. So it has to be reset here.
HAVE_LIB[]NAME=
rpathdirs= rpathdirs=
ltrpathdirs= ltrpathdirs=
names_already_handled= names_already_handled=
@ -327,7 +372,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
dnl Linking with a shared library. We attempt to hardcode its dnl Linking with a shared library. We attempt to hardcode its
dnl directory into the executable's runpath, unless it's the dnl directory into the executable's runpath, unless it's the
dnl standard /usr/lib. dnl standard /usr/lib.
if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then if test "$enable_rpath" = no \
|| test "X$found_dir" = "X/usr/$acl_libdirstem" \
|| test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
dnl No hardcoding is needed. dnl No hardcoding is needed.
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
else else
@ -415,7 +462,16 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
case "$found_dir" in case "$found_dir" in
*/$acl_libdirstem | */$acl_libdirstem/) */$acl_libdirstem | */$acl_libdirstem/)
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
LIB[]NAME[]_PREFIX="$basedir" if test "$name" = '$1'; then
LIB[]NAME[]_PREFIX="$basedir"
fi
additional_includedir="$basedir/include"
;;
*/$acl_libdirstem2 | */$acl_libdirstem2/)
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
if test "$name" = '$1'; then
LIB[]NAME[]_PREFIX="$basedir"
fi
additional_includedir="$basedir/include" additional_includedir="$basedir/include"
;; ;;
esac esac
@ -476,9 +532,11 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
dnl 3. if it's already present in $LDFLAGS or the already dnl 3. if it's already present in $LDFLAGS or the already
dnl constructed $LIBNAME, dnl constructed $LIBNAME,
dnl 4. if it doesn't exist as a directory. dnl 4. if it doesn't exist as a directory.
if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
&& test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
haveit= haveit=
if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
|| test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
if test -n "$GCC"; then if test -n "$GCC"; then
case $host_os in case $host_os in
linux* | gnu* | k*bsd*-gnu) haveit=yes;; linux* | gnu* | k*bsd*-gnu) haveit=yes;;
@ -609,6 +667,11 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
done done
fi fi
popdef([P_A_C_K])
popdef([PACKLIBS])
popdef([PACKUP])
popdef([PACK])
popdef([NAME])
]) ])
dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
@ -654,7 +717,8 @@ AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
if test -n "$next"; then if test -n "$next"; then
dir="$next" dir="$next"
dnl No need to hardcode the standard /usr/lib. dnl No need to hardcode the standard /usr/lib.
if test "X$dir" != "X/usr/$acl_libdirstem"; then if test "X$dir" != "X/usr/$acl_libdirstem" \
&& test "X$dir" != "X/usr/$acl_libdirstem2"; then
rpathdirs="$rpathdirs $dir" rpathdirs="$rpathdirs $dir"
fi fi
next= next=
@ -663,7 +727,8 @@ AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
-L) next=yes ;; -L) next=yes ;;
-L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
dnl No need to hardcode the standard /usr/lib. dnl No need to hardcode the standard /usr/lib.
if test "X$dir" != "X/usr/$acl_libdirstem"; then if test "X$dir" != "X/usr/$acl_libdirstem" \
&& test "X$dir" != "X/usr/$acl_libdirstem2"; then
rpathdirs="$rpathdirs $dir" rpathdirs="$rpathdirs $dir"
fi fi
next= ;; next= ;;

View File

@ -1,5 +1,5 @@
# lib-prefix.m4 serial 5 (gettext-0.15) # lib-prefix.m4 serial 7 (gettext-0.18)
dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it, dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved. dnl with or without modifications, as long as this notice is preserved.
@ -153,33 +153,72 @@ AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
prefix="$acl_save_prefix" prefix="$acl_save_prefix"
]) ])
dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing dnl AC_LIB_PREPARE_MULTILIB creates
dnl the basename of the libdir, either "lib" or "lib64". dnl - a variable acl_libdirstem, containing the basename of the libdir, either
dnl "lib" or "lib64" or "lib/64",
dnl - a variable acl_libdirstem2, as a secondary possible value for
dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
dnl "lib/amd64".
AC_DEFUN([AC_LIB_PREPARE_MULTILIB], AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
[ [
dnl There is no formal standard regarding lib and lib64. The current dnl There is no formal standard regarding lib and lib64.
dnl practice is that on a system supporting 32-bit and 64-bit instruction dnl On glibc systems, the current practice is that on a system supporting
dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
dnl libraries go under $prefix/lib. We determine the compiler's default dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
dnl mode by looking at the compiler's library search path. If at least dnl the compiler's default mode by looking at the compiler's library search
dnl of its elements ends in /lib64 or points to a directory whose absolute dnl path. If at least one of its elements ends in /lib64 or points to a
dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
dnl default, namely "lib". dnl Otherwise we use the default, namely "lib".
dnl On Solaris systems, the current practice is that on a system supporting
dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
AC_REQUIRE([AC_CANONICAL_HOST])
acl_libdirstem=lib acl_libdirstem=lib
searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` acl_libdirstem2=
if test -n "$searchpath"; then case "$host_os" in
acl_save_IFS="${IFS= }"; IFS=":" solaris*)
for searchdir in $searchpath; do dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
if test -d "$searchdir"; then dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
case "$searchdir" in dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
*/lib64/ | */lib64 ) acl_libdirstem=lib64 ;; dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
*) searchdir=`cd "$searchdir" && pwd` dnl symlink is missing, so we set acl_libdirstem2 too.
case "$searchdir" in AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
*/lib64 ) acl_libdirstem=lib64 ;; [AC_EGREP_CPP([sixtyfour bits], [
esac ;; #ifdef _LP64
sixtyfour bits
#endif
], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
])
if test $gl_cv_solaris_64bit = yes; then
acl_libdirstem=lib/64
case "$host_cpu" in
sparc*) acl_libdirstem2=lib/sparcv9 ;;
i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
esac esac
fi fi
done ;;
IFS="$acl_save_IFS" *)
fi searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
if test -n "$searchpath"; then
acl_save_IFS="${IFS= }"; IFS=":"
for searchdir in $searchpath; do
if test -d "$searchdir"; then
case "$searchdir" in
*/lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
*/../ | */.. )
# Better ignore directories of this form. They are misleading.
;;
*) searchdir=`cd "$searchdir" && pwd`
case "$searchdir" in
*/lib64 ) acl_libdirstem=lib64 ;;
esac ;;
esac
fi
done
IFS="$acl_save_IFS"
fi
;;
esac
test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
]) ])

View File

@ -1312,7 +1312,7 @@ ia64-*-hpux*)
rm -rf conftest* rm -rf conftest*
;; ;;
x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
s390*-*linux*|s390*-*tpf*|sparc*-*linux*) s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
# Find out which ABI we are using. # Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext echo 'int i;' > conftest.$ac_ext
@ -1326,7 +1326,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*) x86_64-*linux*)
LD="${LD-ld} -m elf_i386" LD="${LD-ld} -m elf_i386"
;; ;;
ppc64-*linux*|powerpc64-*linux*) powerpc64le-*linux*)
LD="${LD-ld} -m elf32lppclinux"
;;
powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux" LD="${LD-ld} -m elf32ppclinux"
;; ;;
s390x-*linux*) s390x-*linux*)
@ -1345,7 +1348,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*) x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64" LD="${LD-ld} -m elf_x86_64"
;; ;;
ppc*-*linux*|powerpc*-*linux*) powerpcle-*linux*)
LD="${LD-ld} -m elf64lppc"
;;
powerpc-*linux*)
LD="${LD-ld} -m elf64ppc" LD="${LD-ld} -m elf64ppc"
;; ;;
s390*-*linux*|s390*-*tpf*) s390*-*linux*|s390*-*tpf*)

37
anaconda/m4/lock.m4 Normal file
View File

@ -0,0 +1,37 @@
# lock.m4 serial 10 (gettext-0.18)
dnl Copyright (C) 2005-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
AC_DEFUN([gl_LOCK],
[
AC_REQUIRE([gl_THREADLIB])
if test "$gl_threads_api" = posix; then
# OSF/1 4.0 and MacOS X 10.1 lack the pthread_rwlock_t type and the
# pthread_rwlock_* functions.
AC_CHECK_TYPE([pthread_rwlock_t],
[AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1],
[Define if the POSIX multithreading library has read/write locks.])],
[],
[#include <pthread.h>])
# glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
AC_TRY_COMPILE([#include <pthread.h>],
[#if __FreeBSD__ == 4
error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
#else
int x = (int)PTHREAD_MUTEX_RECURSIVE;
return !x;
#endif],
[AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1],
[Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
fi
gl_PREREQ_LOCK
])
# Prerequisites of lib/lock.c.
AC_DEFUN([gl_PREREQ_LOCK], [
AC_REQUIRE([AC_C_INLINE])
])

106
anaconda/m4/longlong.m4 Normal file
View File

@ -0,0 +1,106 @@
# longlong.m4 serial 14
dnl Copyright (C) 1999-2007, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Paul Eggert.
# Define HAVE_LONG_LONG_INT if 'long long int' works.
# This fixes a bug in Autoconf 2.61, but can be removed once we
# assume 2.62 everywhere.
# Note: If the type 'long long int' exists but is only 32 bits large
# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
# defined. In this case you can treat 'long long int' like 'long int'.
AC_DEFUN([AC_TYPE_LONG_LONG_INT],
[
AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
[AC_LINK_IFELSE(
[_AC_TYPE_LONG_LONG_SNIPPET],
[dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
dnl If cross compiling, assume the bug isn't important, since
dnl nobody cross compiles for this platform as far as we know.
AC_RUN_IFELSE(
[AC_LANG_PROGRAM(
[[@%:@include <limits.h>
@%:@ifndef LLONG_MAX
@%:@ define HALF \
(1LL << (sizeof (long long int) * CHAR_BIT - 2))
@%:@ define LLONG_MAX (HALF - 1 + HALF)
@%:@endif]],
[[long long int n = 1;
int i;
for (i = 0; ; i++)
{
long long int m = n << i;
if (m >> i != n)
return 1;
if (LLONG_MAX / 2 < m)
break;
}
return 0;]])],
[ac_cv_type_long_long_int=yes],
[ac_cv_type_long_long_int=no],
[ac_cv_type_long_long_int=yes])],
[ac_cv_type_long_long_int=no])])
if test $ac_cv_type_long_long_int = yes; then
AC_DEFINE([HAVE_LONG_LONG_INT], [1],
[Define to 1 if the system has the type `long long int'.])
fi
])
# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
# This fixes a bug in Autoconf 2.61, but can be removed once we
# assume 2.62 everywhere.
# Note: If the type 'unsigned long long int' exists but is only 32 bits
# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
# will not be defined. In this case you can treat 'unsigned long long int'
# like 'unsigned long int'.
AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
[
AC_CACHE_CHECK([for unsigned long long int],
[ac_cv_type_unsigned_long_long_int],
[AC_LINK_IFELSE(
[_AC_TYPE_LONG_LONG_SNIPPET],
[ac_cv_type_unsigned_long_long_int=yes],
[ac_cv_type_unsigned_long_long_int=no])])
if test $ac_cv_type_unsigned_long_long_int = yes; then
AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
[Define to 1 if the system has the type `unsigned long long int'.])
fi
])
# Expands to a C program that can be used to test for simultaneous support
# of 'long long' and 'unsigned long long'. We don't want to say that
# 'long long' is available if 'unsigned long long' is not, or vice versa,
# because too many programs rely on the symmetry between signed and unsigned
# integer types (excluding 'bool').
AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
[
AC_LANG_PROGRAM(
[[/* For now, do not test the preprocessor; as of 2007 there are too many
implementations with broken preprocessors. Perhaps this can
be revisited in 2012. In the meantime, code should not expect
#if to work with literals wider than 32 bits. */
/* Test literals. */
long long int ll = 9223372036854775807ll;
long long int nll = -9223372036854775807LL;
unsigned long long int ull = 18446744073709551615ULL;
/* Test constant expressions. */
typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
? 1 : -1)];
typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
? 1 : -1)];
int i = 63;]],
[[/* Test availability of runtime routines for shift and division. */
long long int llmax = 9223372036854775807ll;
unsigned long long int ullmax = 18446744073709551615ull;
return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
| (llmax / ll) | (llmax % ll)
| (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
| (ullmax / ull) | (ullmax % ull));]])
])

View File

@ -1,5 +1,6 @@
# nls.m4 serial 3 (gettext-0.15) # nls.m4 serial 5 (gettext-0.18)
dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc. dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
dnl Inc.
dnl This file is free software; the Free Software Foundation dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it, dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved. dnl with or without modifications, as long as this notice is preserved.
@ -17,15 +18,15 @@ dnl Authors:
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
AC_PREREQ(2.50) AC_PREREQ([2.50])
AC_DEFUN([AM_NLS], AC_DEFUN([AM_NLS],
[ [
AC_MSG_CHECKING([whether NLS is requested]) AC_MSG_CHECKING([whether NLS is requested])
dnl Default is enabled NLS dnl Default is enabled NLS
AC_ARG_ENABLE(nls, AC_ARG_ENABLE([nls],
[ --disable-nls do not use Native Language Support], [ --disable-nls do not use Native Language Support],
USE_NLS=$enableval, USE_NLS=yes) USE_NLS=$enableval, USE_NLS=yes)
AC_MSG_RESULT($USE_NLS) AC_MSG_RESULT([$USE_NLS])
AC_SUBST(USE_NLS) AC_SUBST([USE_NLS])
]) ])

View File

@ -1,5 +1,5 @@
# po.m4 serial 15 (gettext-0.17) # po.m4 serial 17 (gettext-0.18)
dnl Copyright (C) 1995-2007 Free Software Foundation, Inc. dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it, dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved. dnl with or without modifications, as long as this notice is preserved.
@ -17,7 +17,7 @@ dnl Authors:
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
AC_PREREQ(2.50) AC_PREREQ([2.50])
dnl Checks for all prerequisites of the po subdirectory. dnl Checks for all prerequisites of the po subdirectory.
AC_DEFUN([AM_PO_SUBDIRS], AC_DEFUN([AM_PO_SUBDIRS],
@ -29,7 +29,7 @@ AC_DEFUN([AM_PO_SUBDIRS],
dnl Release version of the gettext macros. This is used to ensure that dnl Release version of the gettext macros. This is used to ensure that
dnl the gettext macros and po/Makefile.in.in are in sync. dnl the gettext macros and po/Makefile.in.in are in sync.
AC_SUBST([GETTEXT_MACRO_VERSION], [0.17]) AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
dnl Perform the following tests also if --disable-nls has been given, dnl Perform the following tests also if --disable-nls has been given,
dnl because they are needed for "make dist" to work. dnl because they are needed for "make dist" to work.
@ -41,7 +41,7 @@ AC_DEFUN([AM_PO_SUBDIRS],
[$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
(if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
:) :)
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
dnl Test whether it is GNU msgfmt >= 0.15. dnl Test whether it is GNU msgfmt >= 0.15.
changequote(,)dnl changequote(,)dnl

View File

@ -0,0 +1,45 @@
# printf-posix.m4 serial 5 (gettext-0.18)
dnl Copyright (C) 2003, 2007, 2009-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
dnl Test whether the printf() function supports POSIX/XSI format strings with
dnl positions.
AC_DEFUN([gt_PRINTF_POSIX],
[
AC_REQUIRE([AC_PROG_CC])
AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
gt_cv_func_printf_posix,
[
AC_TRY_RUN([
#include <stdio.h>
#include <string.h>
/* The string "%2$d %1$d", with dollar characters protected from the shell's
dollar expansion (possibly an autoconf bug). */
static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
static char buf[100];
int main ()
{
sprintf (buf, format, 33, 55);
return (strcmp (buf, "55 33") != 0);
}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no,
[
AC_EGREP_CPP([notposix], [
#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
notposix
#endif
],
[gt_cv_func_printf_posix="guessing no"],
[gt_cv_func_printf_posix="guessing yes"])
])
])
case $gt_cv_func_printf_posix in
*yes)
AC_DEFINE([HAVE_POSIX_PRINTF], [1],
[Define if your printf() function supports format strings with positions.])
;;
esac
])

View File

@ -1,5 +1,5 @@
# progtest.m4 serial 4 (gettext-0.14.2) # progtest.m4 serial 6 (gettext-0.18)
dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc. dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it, dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved. dnl with or without modifications, as long as this notice is preserved.
@ -16,7 +16,7 @@ dnl They are *not* in the public domain.
dnl Authors: dnl Authors:
dnl Ulrich Drepper <drepper@cygnus.com>, 1996. dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
AC_PREREQ(2.50) AC_PREREQ([2.50])
# Search path for a program which passes the given test. # Search path for a program which passes the given test.
@ -55,7 +55,7 @@ rm -f conf$$.file
# Extract the first word of "$2", so it can be a program name with args. # Extract the first word of "$2", so it can be a program name with args.
set dummy $2; ac_word=[$]2 set dummy $2; ac_word=[$]2
AC_MSG_CHECKING([for $ac_word]) AC_MSG_CHECKING([for $ac_word])
AC_CACHE_VAL(ac_cv_path_$1, AC_CACHE_VAL([ac_cv_path_$1],
[case "[$]$1" in [case "[$]$1" in
[[\\/]]* | ?:[[\\/]]*) [[\\/]]* | ?:[[\\/]]*)
ac_cv_path_$1="[$]$1" # Let the user override the test with a path. ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
@ -84,9 +84,9 @@ ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
esac])dnl esac])dnl
$1="$ac_cv_path_$1" $1="$ac_cv_path_$1"
if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
AC_MSG_RESULT([$]$1) AC_MSG_RESULT([$][$1])
else else
AC_MSG_RESULT(no) AC_MSG_RESULT([no])
fi fi
AC_SUBST($1)dnl AC_SUBST([$1])dnl
]) ])

75
anaconda/m4/size_max.m4 Normal file
View File

@ -0,0 +1,75 @@
# size_max.m4 serial 9
dnl Copyright (C) 2003, 2005-2006, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
AC_DEFUN([gl_SIZE_MAX],
[
AC_CHECK_HEADERS([stdint.h])
dnl First test whether the system already has SIZE_MAX.
AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
gl_cv_size_max=
AC_EGREP_CPP([Found it], [
#include <limits.h>
#if HAVE_STDINT_H
#include <stdint.h>
#endif
#ifdef SIZE_MAX
Found it
#endif
], [gl_cv_size_max=yes])
if test -z "$gl_cv_size_max"; then
dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
dnl than the type 'unsigned long'. Try hard to find a definition that can
dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
[#include <stddef.h>
#include <limits.h>], [size_t_bits_minus_1=])
AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)],
[#include <stddef.h>], [fits_in_uint=])
if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
if test $fits_in_uint = 1; then
dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
AC_TRY_COMPILE([#include <stddef.h>
extern size_t foo;
extern unsigned long foo;
], [], [fits_in_uint=0])
fi
dnl We cannot use 'expr' to simplify this expression, because 'expr'
dnl works only with 'long' integers in the host environment, while we
dnl might be cross-compiling from a 32-bit platform to a 64-bit platform.
if test $fits_in_uint = 1; then
gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
else
gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
fi
else
dnl Shouldn't happen, but who knows...
gl_cv_size_max='((size_t)~(size_t)0)'
fi
fi
])
if test "$gl_cv_size_max" != yes; then
AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
[Define as the maximum value of type 'size_t', if the system doesn't define it.])
fi
dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
dnl #define by AC_DEFINE_UNQUOTED.
AH_VERBATIM([SIZE_MAX],
[/* Define as the maximum value of type 'size_t', if the system doesn't define
it. */
#ifndef SIZE_MAX
# undef SIZE_MAX
#endif])
])
dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
dnl Remove this when we can assume autoconf >= 2.61.
m4_ifdef([AC_COMPUTE_INT], [], [
AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
])

26
anaconda/m4/stdint_h.m4 Normal file
View File

@ -0,0 +1,26 @@
# stdint_h.m4 serial 8
dnl Copyright (C) 1997-2004, 2006, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Paul Eggert.
# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
# doesn't clash with <sys/types.h>, and declares uintmax_t.
AC_DEFUN([gl_AC_HEADER_STDINT_H],
[
AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
[AC_TRY_COMPILE(
[#include <sys/types.h>
#include <stdint.h>],
[uintmax_t i = (uintmax_t) -1; return !i;],
[gl_cv_header_stdint_h=yes],
[gl_cv_header_stdint_h=no])])
if test $gl_cv_header_stdint_h = yes; then
AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
[Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
and declares uintmax_t. ])
fi
])

347
anaconda/m4/threadlib.m4 Normal file
View File

@ -0,0 +1,347 @@
# threadlib.m4 serial 5 (gettext-0.18)
dnl Copyright (C) 2005-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
dnl gl_THREADLIB
dnl ------------
dnl Tests for a multithreading library to be used.
dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
dnl USE_PTH_THREADS, USE_WIN32_THREADS
dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
dnl libtool).
dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
dnl programs that really need multithread functionality. The difference
dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
dnl symbols, typically LIBTHREAD="" whereas LIBMULTITHREAD="-lpthread".
dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
dnl multithread-safe programs.
AC_DEFUN([gl_THREADLIB_EARLY],
[
AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
])
dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once.
AC_DEFUN([gl_THREADLIB_EARLY_BODY],
[
dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
dnl influences the result of the autoconf tests that test for *_unlocked
dnl declarations, on AIX 5 at least. Therefore it must come early.
AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
AC_BEFORE([$0], [gl_ARGP])dnl
AC_REQUIRE([AC_CANONICAL_HOST])
dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems.
dnl AC_USE_SYSTEM_EXTENSIONS was introduced in autoconf 2.60 and obsoletes
dnl AC_GNU_SOURCE.
m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
[AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])],
[AC_REQUIRE([AC_GNU_SOURCE])])
dnl Check for multithreading.
m4_divert_text([DEFAULTS], [gl_use_threads_default=])
AC_ARG_ENABLE([threads],
AC_HELP_STRING([--enable-threads={posix|solaris|pth|win32}], [specify multithreading API])
AC_HELP_STRING([--disable-threads], [build without multithread safety]),
[gl_use_threads=$enableval],
[if test -n "$gl_use_threads_default"; then
gl_use_threads="$gl_use_threads_default"
else
changequote(,)dnl
case "$host_os" in
dnl Disable multithreading by default on OSF/1, because it interferes
dnl with fork()/exec(): When msgexec is linked with -lpthread, its
dnl child process gets an endless segmentation fault inside execvp().
dnl Disable multithreading by default on Cygwin 1.5.x, because it has
dnl bugs that lead to endless loops or crashes. See
dnl <http://cygwin.com/ml/cygwin/2009-08/msg00283.html>.
osf*) gl_use_threads=no ;;
cygwin*)
case `uname -r` in
1.[0-5].*) gl_use_threads=no ;;
*) gl_use_threads=yes ;;
esac
;;
*) gl_use_threads=yes ;;
esac
changequote([,])dnl
fi
])
if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
# For using <pthread.h>:
case "$host_os" in
osf*)
# On OSF/1, the compiler needs the flag -D_REENTRANT so that it
# groks <pthread.h>. cc also understands the flag -pthread, but
# we don't use it because 1. gcc-2.95 doesn't understand -pthread,
# 2. putting a flag into CPPFLAGS that has an effect on the linker
# causes the AC_TRY_LINK test below to succeed unexpectedly,
# leading to wrong values of LIBTHREAD and LTLIBTHREAD.
CPPFLAGS="$CPPFLAGS -D_REENTRANT"
;;
esac
# Some systems optimize for single-threaded programs by default, and
# need special flags to disable these optimizations. For example, the
# definition of 'errno' in <errno.h>.
case "$host_os" in
aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
esac
fi
])
dnl The guts of gl_THREADLIB. Needs to be expanded only once.
AC_DEFUN([gl_THREADLIB_BODY],
[
AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
gl_threads_api=none
LIBTHREAD=
LTLIBTHREAD=
LIBMULTITHREAD=
LTLIBMULTITHREAD=
if test "$gl_use_threads" != no; then
dnl Check whether the compiler and linker support weak declarations.
AC_CACHE_CHECK([whether imported symbols can be declared weak],
[gl_cv_have_weak],
[gl_cv_have_weak=no
dnl First, test whether the compiler accepts it syntactically.
AC_TRY_LINK([extern void xyzzy ();
#pragma weak xyzzy], [xyzzy();], [gl_cv_have_weak=maybe])
if test $gl_cv_have_weak = maybe; then
dnl Second, test whether it actually works. On Cygwin 1.7.2, with
dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
AC_TRY_RUN([
#include <stdio.h>
#pragma weak fputs
int main ()
{
return (fputs == NULL);
}], [gl_cv_have_weak=yes], [gl_cv_have_weak=no],
[dnl When cross-compiling, assume that only ELF platforms support
dnl weak symbols.
AC_EGREP_CPP([Extensible Linking Format],
[#ifdef __ELF__
Extensible Linking Format
#endif
],
[gl_cv_have_weak="guessing yes"],
[gl_cv_have_weak="guessing no"])
])
fi
])
if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
# On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
# it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
AC_CHECK_HEADER([pthread.h],
[gl_have_pthread_h=yes], [gl_have_pthread_h=no])
if test "$gl_have_pthread_h" = yes; then
# Other possible tests:
# -lpthreads (FSU threads, PCthreads)
# -lgthreads
gl_have_pthread=
# Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
# in libc. IRIX 6.5 has the first one in both libc and libpthread, but
# the second one only in libpthread, and lock.c needs it.
AC_TRY_LINK([#include <pthread.h>],
[pthread_mutex_lock((pthread_mutex_t*)0);
pthread_mutexattr_init((pthread_mutexattr_t*)0);],
[gl_have_pthread=yes])
# Test for libpthread by looking for pthread_kill. (Not pthread_self,
# since it is defined as a macro on OSF/1.)
if test -n "$gl_have_pthread"; then
# The program links fine without libpthread. But it may actually
# need to link with libpthread in order to create multiple threads.
AC_CHECK_LIB([pthread], [pthread_kill],
[LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
# On Solaris and HP-UX, most pthread functions exist also in libc.
# Therefore pthread_in_use() needs to actually try to create a
# thread: pthread_create from libc will fail, whereas
# pthread_create will actually create a thread.
case "$host_os" in
solaris* | hpux*)
AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1],
[Define if the pthread_in_use() detection is hard.])
esac
])
else
# Some library is needed. Try libpthread and libc_r.
AC_CHECK_LIB([pthread], [pthread_kill],
[gl_have_pthread=yes
LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
if test -z "$gl_have_pthread"; then
# For FreeBSD 4.
AC_CHECK_LIB([c_r], [pthread_kill],
[gl_have_pthread=yes
LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
fi
fi
if test -n "$gl_have_pthread"; then
gl_threads_api=posix
AC_DEFINE([USE_POSIX_THREADS], [1],
[Define if the POSIX multithreading library can be used.])
if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
AC_DEFINE([USE_POSIX_THREADS_WEAK], [1],
[Define if references to the POSIX multithreading library should be made weak.])
LIBTHREAD=
LTLIBTHREAD=
fi
fi
fi
fi
fi
if test -z "$gl_have_pthread"; then
if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
gl_have_solaristhread=
gl_save_LIBS="$LIBS"
LIBS="$LIBS -lthread"
AC_TRY_LINK([#include <thread.h>
#include <synch.h>],
[thr_self();],
[gl_have_solaristhread=yes])
LIBS="$gl_save_LIBS"
if test -n "$gl_have_solaristhread"; then
gl_threads_api=solaris
LIBTHREAD=-lthread
LTLIBTHREAD=-lthread
LIBMULTITHREAD="$LIBTHREAD"
LTLIBMULTITHREAD="$LTLIBTHREAD"
AC_DEFINE([USE_SOLARIS_THREADS], [1],
[Define if the old Solaris multithreading library can be used.])
if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1],
[Define if references to the old Solaris multithreading library should be made weak.])
LIBTHREAD=
LTLIBTHREAD=
fi
fi
fi
fi
if test "$gl_use_threads" = pth; then
gl_save_CPPFLAGS="$CPPFLAGS"
AC_LIB_LINKFLAGS([pth])
gl_have_pth=
gl_save_LIBS="$LIBS"
LIBS="$LIBS -lpth"
AC_TRY_LINK([#include <pth.h>], [pth_self();], [gl_have_pth=yes])
LIBS="$gl_save_LIBS"
if test -n "$gl_have_pth"; then
gl_threads_api=pth
LIBTHREAD="$LIBPTH"
LTLIBTHREAD="$LTLIBPTH"
LIBMULTITHREAD="$LIBTHREAD"
LTLIBMULTITHREAD="$LTLIBTHREAD"
AC_DEFINE([USE_PTH_THREADS], [1],
[Define if the GNU Pth multithreading library can be used.])
if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
AC_DEFINE([USE_PTH_THREADS_WEAK], [1],
[Define if references to the GNU Pth multithreading library should be made weak.])
LIBTHREAD=
LTLIBTHREAD=
fi
fi
else
CPPFLAGS="$gl_save_CPPFLAGS"
fi
fi
if test -z "$gl_have_pthread"; then
if test "$gl_use_threads" = yes || test "$gl_use_threads" = win32; then
if { case "$host_os" in
mingw*) true;;
*) false;;
esac
}; then
gl_threads_api=win32
AC_DEFINE([USE_WIN32_THREADS], [1],
[Define if the Win32 multithreading API can be used.])
fi
fi
fi
fi
AC_MSG_CHECKING([for multithread API to use])
AC_MSG_RESULT([$gl_threads_api])
AC_SUBST([LIBTHREAD])
AC_SUBST([LTLIBTHREAD])
AC_SUBST([LIBMULTITHREAD])
AC_SUBST([LTLIBMULTITHREAD])
])
AC_DEFUN([gl_THREADLIB],
[
AC_REQUIRE([gl_THREADLIB_EARLY])
AC_REQUIRE([gl_THREADLIB_BODY])
])
dnl gl_DISABLE_THREADS
dnl ------------------
dnl Sets the gl_THREADLIB default so that threads are not used by default.
dnl The user can still override it at installation time, by using the
dnl configure option '--enable-threads'.
AC_DEFUN([gl_DISABLE_THREADS], [
m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no])
])
dnl Survey of platforms:
dnl
dnl Platform Available Compiler Supports test-lock
dnl flavours option weak result
dnl --------------- --------- --------- -------- ---------
dnl Linux 2.4/glibc posix -lpthread Y OK
dnl
dnl GNU Hurd/glibc posix
dnl
dnl FreeBSD 5.3 posix -lc_r Y
dnl posix -lkse ? Y
dnl posix -lpthread ? Y
dnl posix -lthr Y
dnl
dnl FreeBSD 5.2 posix -lc_r Y
dnl posix -lkse Y
dnl posix -lthr Y
dnl
dnl FreeBSD 4.0,4.10 posix -lc_r Y OK
dnl
dnl NetBSD 1.6 --
dnl
dnl OpenBSD 3.4 posix -lpthread Y OK
dnl
dnl MacOS X 10.[123] posix -lpthread Y OK
dnl
dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK
dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK
dnl
dnl HP-UX 11 posix -lpthread N (cc) OK
dnl Y (gcc)
dnl
dnl IRIX 6.5 posix -lpthread Y 0.5
dnl
dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK
dnl
dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK
dnl -lpthread (gcc) Y
dnl
dnl Cygwin posix -lpthread Y OK
dnl
dnl Any of the above pth -lpth 0.0
dnl
dnl Mingw win32 N OK
dnl
dnl BeOS 5 --
dnl
dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
dnl turned off:
dnl OK if all three tests terminate OK,
dnl 0.5 if the first test terminates OK but the second one loops endlessly,
dnl 0.0 if the first test already loops endlessly.

30
anaconda/m4/uintmax_t.m4 Normal file
View File

@ -0,0 +1,30 @@
# uintmax_t.m4 serial 12
dnl Copyright (C) 1997-2004, 2007-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Paul Eggert.
AC_PREREQ([2.13])
# Define uintmax_t to 'unsigned long' or 'unsigned long long'
# if it is not already defined in <stdint.h> or <inttypes.h>.
AC_DEFUN([gl_AC_TYPE_UINTMAX_T],
[
AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
AC_REQUIRE([gl_AC_HEADER_STDINT_H])
if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
test $ac_cv_type_unsigned_long_long_int = yes \
&& ac_type='unsigned long long' \
|| ac_type='unsigned long'
AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
[Define to unsigned long or unsigned long long
if <stdint.h> and <inttypes.h> don't define.])
else
AC_DEFINE([HAVE_UINTMAX_T], [1],
[Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
fi
])

74
anaconda/m4/visibility.m4 Normal file
View File

@ -0,0 +1,74 @@
# visibility.m4 serial 3 (gettext-0.18)
dnl Copyright (C) 2005, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
dnl Tests whether the compiler supports the command-line option
dnl -fvisibility=hidden and the function and variable attributes
dnl __attribute__((__visibility__("hidden"))) and
dnl __attribute__((__visibility__("default"))).
dnl Does *not* test for __visibility__("protected") - which has tricky
dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
dnl MacOS X.
dnl Does *not* test for __visibility__("internal") - which has processor
dnl dependent semantics.
dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
dnl "really only recommended for legacy code".
dnl Set the variable CFLAG_VISIBILITY.
dnl Defines and sets the variable HAVE_VISIBILITY.
AC_DEFUN([gl_VISIBILITY],
[
AC_REQUIRE([AC_PROG_CC])
CFLAG_VISIBILITY=
HAVE_VISIBILITY=0
if test -n "$GCC"; then
dnl First, check whether -Werror can be added to the command line, or
dnl whether it leads to an error because of some other option that the
dnl user has put into $CC $CFLAGS $CPPFLAGS.
AC_MSG_CHECKING([whether the -Werror option is usable])
AC_CACHE_VAL([gl_cv_cc_vis_werror], [
gl_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror"
AC_TRY_COMPILE([], [],
[gl_cv_cc_vis_werror=yes],
[gl_cv_cc_vis_werror=no])
CFLAGS="$gl_save_CFLAGS"])
AC_MSG_RESULT([$gl_cv_cc_vis_werror])
dnl Now check whether visibility declarations are supported.
AC_MSG_CHECKING([for simple visibility declarations])
AC_CACHE_VAL([gl_cv_cc_visibility], [
gl_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fvisibility=hidden"
dnl We use the option -Werror and a function dummyfunc, because on some
dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
dnl "visibility attribute not supported in this configuration; ignored"
dnl at the first function definition in every compilation unit, and we
dnl don't want to use the option in this case.
if test $gl_cv_cc_vis_werror = yes; then
CFLAGS="$CFLAGS -Werror"
fi
AC_TRY_COMPILE(
[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
extern __attribute__((__visibility__("default"))) int exportedvar;
extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
extern __attribute__((__visibility__("default"))) int exportedfunc (void);
void dummyfunc (void) {}],
[],
[gl_cv_cc_visibility=yes],
[gl_cv_cc_visibility=no])
CFLAGS="$gl_save_CFLAGS"])
AC_MSG_RESULT([$gl_cv_cc_visibility])
if test $gl_cv_cc_visibility = yes; then
CFLAG_VISIBILITY="-fvisibility=hidden"
HAVE_VISIBILITY=1
fi
fi
AC_SUBST([CFLAG_VISIBILITY])
AC_SUBST([HAVE_VISIBILITY])
AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
[Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
])

20
anaconda/m4/wchar_t.m4 Normal file
View File

@ -0,0 +1,20 @@
# wchar_t.m4 serial 3 (gettext-0.18)
dnl Copyright (C) 2002-2003, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
dnl Test whether <stddef.h> has the 'wchar_t' type.
dnl Prerequisite: AC_PROG_CC
AC_DEFUN([gt_TYPE_WCHAR_T],
[
AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
[AC_TRY_COMPILE([#include <stddef.h>
wchar_t foo = (wchar_t)'\0';], ,
[gt_cv_c_wchar_t=yes], [gt_cv_c_wchar_t=no])])
if test $gt_cv_c_wchar_t = yes; then
AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
fi
])

28
anaconda/m4/wint_t.m4 Normal file
View File

@ -0,0 +1,28 @@
# wint_t.m4 serial 4 (gettext-0.18)
dnl Copyright (C) 2003, 2007-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
dnl From Bruno Haible.
dnl Test whether <wchar.h> has the 'wint_t' type.
dnl Prerequisite: AC_PROG_CC
AC_DEFUN([gt_TYPE_WINT_T],
[
AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
[AC_TRY_COMPILE([
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
<wchar.h>.
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
before <wchar.h>. */
#include <stddef.h>
#include <stdio.h>
#include <time.h>
#include <wchar.h>
wint_t foo = (wchar_t)'\0';], ,
[gt_cv_c_wint_t=yes], [gt_cv_c_wint_t=no])])
if test $gt_cv_c_wint_t = yes; then
AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
fi
])

13
anaconda/m4/xsize.m4 Normal file
View File

@ -0,0 +1,13 @@
# xsize.m4 serial 4
dnl Copyright (C) 2003-2004, 2008-2010 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
AC_DEFUN([gl_XSIZE],
[
dnl Prerequisites of lib/xsize.h.
AC_REQUIRE([gl_SIZE_MAX])
AC_REQUIRE([AC_C_INLINE])
AC_CHECK_HEADERS([stdint.h])
])

View File

@ -1,4 +1,4 @@
# tests/storage/devicelibs/Makefile.am for anaconda # tests/Makefile.am for anaconda
# #
# Copyright (C) 2009 Red Hat, Inc. # Copyright (C) 2009 Red Hat, Inc.
# #
@ -17,6 +17,6 @@
# #
# Author: David Cantrell <dcantrell@redhat.com> # Author: David Cantrell <dcantrell@redhat.com>
EXTRA_DIST = *.py SUBDIRS = mock kickstart_test regex pyanaconda_test logpicker_test
MAINTAINERCLEANFILES = Makefile.in MAINTAINERCLEANFILES = Makefile.in

Some files were not shown because too many files have changed in this diff Show More