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
SUBDIRS = pyanaconda po data \
tests utils scripts docs dracut widgets
SUBDIRS = data docs dracut po pyanaconda scripts tests widgets utils
EXTRA_DIST = config.rpath COPYING
MAINTAINERCLEANFILES = Makefile.in config.guess config.h.in config.sub \
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 = *~
@ -38,32 +39,39 @@ dist_sbin_SCRIPTS = anaconda
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_PUSH_ARGS = -s
#$(PACKAGE_NAME).spec: $(PACKAGE_NAME).spec.in
# $(sed_verbose)sed -e 's/#VERSION#/$(PACKAGE_VERSION)/' < $< > $@
tag:
@git tag -s -a -m "Tag as $(ARCHIVE_TAG)" $(ARCHIVE_TAG)
@echo "Tagged as $(ARCHIVE_TAG)"
po-pull:
rm -f po/en@boldquot.gmo po/en@boldquot.po
rm -f po/en@quot.gmo po/en@quot.po
rm -f $(srcdir)/po/en@boldquot.gmo $(srcdir)/po/en@boldquot.po
rm -f $(srcdir)/po/en@quot.gmo $(srcdir)/po/en@quot.po
rpm -q transifex-client &>/dev/null || ( echo "need to run: yum install transifex-client"; exit 1 )
tx pull $(TX_PULL_ARGS)
scratch: po-pull
$(MAKE) ARCHIVE_TAG=HEAD dist
git checkout -- po/$(PACKAGE_NAME).pot
git checkout -- $(srcdir)/po/$(PACKAGE_NAME).pot
scratch-bumpver: po-pull
@opts="-n $(PACKAGE_NAME) -v $(PACKAGE_VERSION) -r $(PACKAGE_RELEASE) -b $(PACKAGE_BUGREPORT)" ; \
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:
$(MAKE) dist && $(MAKE) tag && git checkout -- po/$(PACKAGE_NAME).pot
$(MAKE) dist && $(MAKE) tag && git checkout -- $(srcdir)/po/$(PACKAGE_NAME).pot
api:
doxygen docs/api.cfg
@ -79,12 +87,23 @@ bumpver: po-pull
if [ ! -z "$(BZDEBUG)" ]; then \
opts="$${opts} -d" ; \
fi ; \
scripts/makebumpver $${opts} || exit 1 ; \
$(MAKE) -C po $(PACKAGE_NAME).pot-update ; \
( cd $(srcdir) && scripts/makebumpver $${opts} ) || exit 1 ; \
$(MAKE) -C po $(PACKAGE_NAME).pot-update && \
tx push $(TX_PUSH_ARGS)
# Install all packages specified as BuildRequires in the Anaconda specfile
# -> installs packages needed to build Anaconda
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
# was tagged. Updates are copied to ./updates-img and then the image is
@ -97,62 +116,59 @@ updates:
if [ "$${keep}" = "Y" ]; then \
opts="$${opts} -k" ; \
fi ; \
scripts/makeupdates $${opts}
( cd $(srcdir) && scripts/makeupdates $${opts} -b '$(abs_builddir)' )
# UNIT TESTING TARGETS
unittest:
PYTHONPATH=tests/:. nosetests --exclude=logpicker -a \!acceptance,\!slow tests/
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
runspoke:
ANACONDA_DATA=${PWD}/data \
ANACONDA_WIDGETS_OVERRIDES=${PWD}/widgets/python \
ANACONDA_WIDGETS_DATA=${PWD}/widgets/data \
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \
LD_LIBRARY_PATH=widgets/src/.libs \
UIPATH=pyanaconda/ui/gui/ \
GI_TYPELIB_PATH=widgets/src/ \
pyanaconda/ui/gui/tools/run-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS}
ANACONDA_DATA=$(srcdir)/data \
ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \
ANACONDA_WIDGETS_DATA=$(srcdir)/widgets/data \
ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
UIPATH=$(srcdir)/pyanaconda/ui/gui/ \
GI_TYPELIB_PATH=$(builddir)/widgets/src/ \
$(srcdir)/pyanaconda/ui/gui/tools/run-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS}
runhub:
ANACONDA_DATA=${PWD}/data \
ANACONDA_WIDGETS_OVERRIDES=${PWD}/widgets/python \
ANACONDA_WIDGETS_DATA=${PWD}/widgets/data \
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \
LD_LIBRARY_PATH=widgets/src/.libs \
UIPATH=pyanaconda/ui/gui/ \
GI_TYPELIB_PATH=widgets/src/ \
pyanaconda/ui/gui/tools/run-hub.py ${HUB_MODULE} ${HUB_CLASS}
ANACONDA_DATA=$(srcdir)/data \
ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \
ANACONDA_WIDGETS_DATA=$(srcdir)/widgets/data \
ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
UIPATH=$(srcdir)/pyanaconda/ui/gui/ \
GI_TYPELIB_PATH=$(builddir)/widgets/src/ \
$(srcdir)/pyanaconda/ui/gui/tools/run-hub.py ${HUB_MODULE} ${HUB_CLASS}
runtextspoke:
ANACONDA_DATA=${PWD}/data \
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \
LD_LIBRARY_PATH=widgets/src/.libs \
pyanaconda/ui/tui/tools/run-text-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS}
ANACONDA_DATA=$(srcdir)/data \
ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
$(srcdir)/pyanaconda/ui/tui/tools/run-text-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS}
runtexthub:
ANACONDA_DATA=${PWD}/data \
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \
LD_LIBRARY_PATH=widgets/src/.libs \
pyanaconda/ui/tui/tools/run-text-hub.py ${HUB_MODULE} ${HUB_CLASS}
ANACONDA_DATA=$(srcdir)/data \
ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
$(srcdir)/pyanaconda/ui/tui/tools/run-text-hub.py ${HUB_MODULE} ${HUB_CLASS}
runglade:
ANACONDA_DATA=${PWD}/data \
ANACONDA_WIDGETS_OVERRIDES=${PWD}/widgets/python \
ANACONDA_WIDGETS_DATA=${PWD}/widgets/data \
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \
LD_LIBRARY_PATH=widgets/src/.libs \
UIPATH=pyanaconda/ui/gui/ \
GI_TYPELIB_PATH=widgets/src/ \
GLADE_CATALOG_SEARCH_PATH=${PWD}/widgets/glade \
GLADE_MODULE_SEARCH_PATH=${PWD}/widgets/src/.libs \
ANACONDA_DATA=$(srcdir)/data \
ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \
ANACONDA_WIDGETS_DATA=$(srcdir)/widgets/data \
ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
UIPATH=$(srcdir)/pyanaconda/ui/gui/ \
GI_TYPELIB_PATH=$(builddir)/widgets/src/ \
GLADE_CATALOG_SEARCH_PATH=$(srcdir)/widgets/glade \
GLADE_MODULE_SEARCH_PATH=$(builddir)/widgets/src/.libs \
glade ${GLADE_FILE}

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
# gives unlimited permission to copy and/or distribute it,
@ -11,6 +11,7 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# 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_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
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.
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 -*-
# serial 1 (pkg-config-0.24)
#
@ -271,24 +220,22 @@ m4_popdef([pkg_default])
m4_popdef([pkg_description])
]) 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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 8
# AM_AUTOMAKE_VERSION(VERSION)
# ----------------------------
# Automake X.Y traces this macro to ensure aclocal.m4 has been
# generated from the m4 files accompanying Automake X.Y.
# (This private macro should not be called outside this file.)
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 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
])
@ -304,21 +251,19 @@ m4_define([_AM_AUTOCONF_VERSION], [])
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
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_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
# 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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
@ -366,14 +311,12 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
# 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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 10
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
# -------------------------------------
# Define a conditional.
@ -399,13 +342,12 @@ AC_CONFIG_COMMANDS_PRE(
Usually this means the macro was only invoked conditionally.]])
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
# gives unlimited permission to copy and/or distribute it,
# 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
# 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 -*-
# 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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 6
# _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
# if we detect the quoting.
case $CONFIG_FILES in
@ -632,7 +573,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
test -z "$DEPDIR" && continue
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"`
# Find all dependency output files, they are included files with
# $(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 -*-
# 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
# gives unlimited permission to copy and/or distribute it,
# 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
# 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
# release and drop the old call support.
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 the ones we care about.
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.
m4_ifval([$2],
[AC_DIAGNOSE([obsolete],
[$0: two- and three-arguments forms are deprecated. For more info, see:
http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
[$0: two- and three-arguments forms are deprecated.])
m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
AC_SUBST([PACKAGE], [$1])dnl
AC_SUBST([VERSION], [$2])],
@ -776,18 +714,15 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
[_AM_DEPENDENCIES([OBJC])],
[m4_define([AC_PROG_OBJC],
m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
dnl Support for Objective C++ was only introduced in Autoconf 2.65,
dnl but we still cater to Autoconf 2.62.
m4_ifdef([AC_PROG_OBJCXX],
[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
[_AM_DEPENDENCIES([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
dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the
dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_REQUIRE([AM_SILENT_RULES])dnl
dnl The testsuite driver may need to know about EXEEXT, so add the
dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
AC_CONFIG_COMMANDS_PRE(dnl
[m4_provide_if([_AM_COMPILER_EXEEXT],
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
@ -821,14 +756,12 @@ for _am_header in $config_headers :; do
done
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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 8
# AM_PROG_INSTALL_SH
# ------------------
# Define $install_sh.
@ -844,14 +777,12 @@ if test x"${install_sh}" != xset; then
fi
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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# Check whether the underlying file-system supports filenames
# with a leading dot. For instance MS-DOS doesn't.
AC_DEFUN([AM_SET_LEADING_DOT],
@ -867,14 +798,12 @@ AC_SUBST([am__leading_dot])])
# 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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 5
# AM_MAKE_INCLUDE()
# -----------------
# 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 -*-
# 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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 7
# AM_MISSING_PROG(NAME, PROGRAM)
# ------------------------------
AC_DEFUN([AM_MISSING_PROG],
@ -934,11 +861,10 @@ AC_DEFUN([AM_MISSING_PROG],
$1=${$1-"${am_missing_run}$2"}
AC_SUBST($1)])
# AM_MISSING_HAS_RUN
# ------------------
# Define MISSING if not defined so far and test if it supports --run.
# If it does, set am_missing_run to use it, otherwise, to nothing.
# Define MISSING if not defined so far and test if it is modern enough.
# If it is, set am_missing_run to use it, otherwise, to nothing.
AC_DEFUN([AM_MISSING_HAS_RUN],
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
AC_REQUIRE_AUX_FILE([missing])dnl
@ -951,29 +877,28 @@ if test x"${MISSING+set}" != xset; then
esac
fi
# Use eval to expand $SHELL
if eval "$MISSING --run true"; then
am_missing_run="$MISSING --run "
if eval "$MISSING --is-lightweight"; then
am_missing_run="$MISSING "
else
am_missing_run=
AC_MSG_WARN(['missing' script is too old or missing])
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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 3
# AM_PROG_MKDIR_P
# ---------------
# Check for 'mkdir -p'.
AC_DEFUN([AM_PROG_MKDIR_P],
[AC_PREREQ([2.60])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],
[$0: this macro is deprecated, and will soon be removed.
You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead,
@ -994,14 +919,12 @@ esac
# 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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 6
# _AM_MANGLE_OPTION(NAME)
# -----------------------
AC_DEFUN([_AM_MANGLE_OPTION],
@ -1025,13 +948,12 @@ AC_DEFUN([_AM_SET_OPTIONS],
AC_DEFUN([_AM_IF_OPTION],
[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
# gives unlimited permission to copy and/or distribute it,
# 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])
# ---------------------------------------------------------------------------
@ -1060,7 +982,7 @@ AC_DEFUN([AM_PATH_PYTHON],
dnl Find a Python interpreter. Python versions prior to 2.0 are not
dnl supported. (2.0 was released on October 16, 2000).
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])
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)"`])
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:
@ -1145,7 +1086,14 @@ AC_DEFUN([AM_PATH_PYTHON],
else
am_py_prefix=$prefix
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
$am_py_prefix*)
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
@ -1180,7 +1128,14 @@ AC_DEFUN([AM_PATH_PYTHON],
else
am_py_exec_prefix=$exec_prefix
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
$am_py_exec_prefix*)
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)"
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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 1
# AM_RUN_LOG(COMMAND)
# -------------------
# 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 -*-
# 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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 9
# AM_SANITY_CHECK
# ---------------
AC_DEFUN([AM_SANITY_CHECK],
@ -1332,14 +1283,12 @@ AC_CONFIG_COMMANDS_PRE(
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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 3
# AM_SILENT_RULES([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
])
# 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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 2
# AM_PROG_INSTALL_STRIP
# ---------------------
# One issue with vendor 'install' (even GNU) is that you can't
@ -1424,14 +1371,12 @@ fi
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 3
# _AM_SUBST_NOTMAKE(VARIABLE)
# ---------------------------
# 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 -*-
# 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
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 3
# _AM_PROG_TAR(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
# a tarball read from stdin.
# $(am__untar) < result.tar
#
AC_DEFUN([_AM_PROG_TAR],
[# Always define AMTAR for backward compatibility. Yes, it's still used
# in the wild :-( We should find a proper way to deprecate it ...
AC_SUBST([AMTAR], ['$${TAR-tar}'])
m4_if([$1], [v7],
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
[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.
# We'll 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=${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
# and am__untar set.
test -n "${am_cv_prog_tar_$1}" && break
m4_if([$1], [v7],
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
# 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
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_MSG_RESULT([$am_cv_prog_tar_$1])])
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
AC_SUBST([am__tar])
AC_SUBST([am__untar])
]) # _AM_PROG_TAR
m4_include([m4/gettext.m4])
m4_include([m4/iconv.m4])
m4_include([m4/intlmacosx.m4])
m4_include([m4/lib-ld.m4])
m4_include([m4/lib-link.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/po.m4])
m4_include([m4/progtest.m4])
m4_include([m4/python.m4])

View File

@ -2,7 +2,7 @@
#
# 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.
#
# This program is free software; you can redistribute it and/or modify
@ -28,17 +28,16 @@
# Matt Wilson <msw@rpath.com>
#
# This toplevel file is a little messy at the moment...
import atexit, sys, os, re, time, subprocess
from tempfile import mkstemp
# This toplevel file is a little messy at the moment... (2001-06-22)
# ...still messy (2013-07-12)
import atexit, sys, os, time, subprocess
# keep up with process ID of the window manager if we start it
wm_pid = None
def exitHandler(rebootData, storage, exitCode=None):
from pyanaconda import isys
from pyanaconda.flags import flags
if flags.usevnc:
vnc.shutdownServer()
if exitCode:
anaconda.intf.shutdown()
@ -50,32 +49,41 @@ def exitHandler(rebootData, storage, exitCode=None):
while True:
time.sleep(10000)
if image_count:
if image_count or flags.dirInstall:
anaconda.storage.umountFilesystems(ignoreErrors=True, swapoff=False)
devicetree = anaconda.storage.devicetree
devicetree.teardownAll()
for name in devicetree.diskImages:
device = devicetree.getDeviceByName(name)
for loop in device.parents:
dev = devicetree.getDeviceByName(name)
for loop in dev.parents:
loop.controllable = True
device.deactivate(recursive=True)
dev.deactivate(recursive=True)
if not flags.imageInstall and not flags.livecdInstall:
from pykickstart.constants import KS_SHUTDOWN, KS_WAIT, KS_REBOOT
if not flags.imageInstall and not flags.livecdInstall \
and not flags.dirInstall:
from pykickstart.constants import KS_SHUTDOWN, KS_WAIT
from pyanaconda.iutil import dracut_eject
if rebootData.eject:
if flags.eject or rebootData.eject:
for drive in storage.devicetree.devices:
if drive.type != "cdrom":
continue
dracut_eject(drive.path)
if rebootData.action == KS_SHUTDOWN:
os.system("systemctl --no-wall poweroff")
subprocess.Popen(["systemctl", "--no-wall", "poweroff"])
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
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():
childpid = os.fork()
@ -83,17 +91,14 @@ def startMetacityWM():
# after this point the method should never return (or throw an exception
# outside)
try:
args = ['--display', ':1',
'--sm-disable']
iutil.execWithRedirect('metacity', args,
stdout='/dev/null', stderr='/dev/null')
iutil.execWithRedirect('metacity', ["--display", ":1", "--sm-disable"])
except BaseException as e:
# catch all possible exceptions
log.error("Problems running the window manager: %s" % str(e))
sys.exit(1)
log.error("Problems running the window manager: %s", e)
os._exit(1)
log.info("The window manager has terminated.")
sys.exit(0)
os._exit(0)
return childpid
def startAuditDaemon():
@ -103,8 +108,8 @@ def startAuditDaemon():
try:
os.execl(cmd, cmd)
except OSError as e:
log.error("Error running the audit daemon: %s" % str(e))
sys.exit(0)
log.error("Error running the audit daemon: %s", e)
os._exit(0)
# auditd will turn into a daemon so catch the immediate child pid now:
os.waitpid(childpid, 0)
@ -116,7 +121,7 @@ def doStartupX11Actions():
# now start up the window manager
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):
# 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 :
try:
log.info("Setting the screen resolution to: %s.", runres)
iutil.execWithRedirect("xrandr",
["-d", ":1", "-s", runres],
stdout="/dev/tty5", stderr="/dev/tty5")
except RuntimeError as e:
iutil.execWithRedirect("xrandr",
["-d", ":1", "-s", runres])
except RuntimeError:
log.error("The X resolution not set")
iutil.execWithRedirect("xrandr",
["-d", ":1", "-q"],
stdout="/dev/tty5", stderr="/dev/tty5")
["-d", ":1", "-q"])
def doExtraX11Actions(runres):
"""Perform X11 actions not related to startup"""
set_x_resolution(runres)
startSpiceVDAgent()
keyboard.background_XklWrapper_initialize()
def setupPythonUpdates():
from distutils.sysconfig import get_python_lib
import gi.overrides
# Temporary hack for F18 alpha to symlink updates and product directories
# into tmpfs. To be removed after beta in order to directly use content
@ -169,13 +182,15 @@ def setupPythonUpdates():
# the updates directory.
symlink_updates(dest, d)
gi.overrides.__path__.insert(0, "/run/install/updates")
import glob
import shutil
for rule in glob.glob("/tmp/updates/*.rules"):
target = "/etc/udev/rules.d/" + rule.split('/')[-1]
shutil.copyfile(rule, target)
def symlink_updates(dest_dir, update_dir):
def symlink_updates(dest_dir, update_dir):
contents = os.listdir(update_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("-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("--stage2", dest="stage2", default=None)
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("--nofb")
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("--virtpconsole")
op.add_option("--vnc", action="store_true", default=False)
op.add_option("--vncconnect")
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("--iscsi", action="store_true")
# Geolocation
op.add_option("--geoloc")
# Miscellaneous
op.add_option("--module", action="append", default=[])
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("--dlabel", action="store_true", default=False)
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("--nomemcheck", action="store_false", dest="memcheck")
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
if cmdline is not None:
if "console" in cmdline:
op.set_defaults(display_mode="t")
(opts, args) = op.parse_args(argv, cmdline=cmdline)
return (opts, args, op.deprecated_bootargs)
(options, extraArgs) = op.parse_args(argv, cmdline=cmdline)
return (options, extraArgs, op.deprecated_bootargs)
def setupPythonPath():
# First add our updates path
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():
# Silly GNOME stuff
@ -317,34 +341,38 @@ def setupEnvironment():
if os.environ.has_key("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/"
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/"
def setupLoggingFromOpts(options):
if options.debug:
# debugging means debug logging
options.loglevel = "debug"
def setupLoggingFromOpts(opts):
if opts.loglevel and anaconda_log.logLevelMap.has_key(opts.loglevel):
if options.loglevel and anaconda_log.logLevelMap.has_key(options.loglevel):
level = anaconda_log.logLevelMap[opts.loglevel]
anaconda_log.logger.tty_loglevel = level
anaconda_log.setHandlersLevel(log, level)
packaging_log = logging.getLogger("packaging")
anaconda_log.setHandlersLevel(packaging_log, level)
storage_log = logging.getLogger("storage")
anaconda_log.setHandlersLevel(storage_log, level)
if opts.syslog:
anaconda_log.logger.remote_syslog = opts.syslog
if options.syslog:
anaconda_log.logger.updateRemote(options.syslog)
def gtk_warning(title, reason):
import gtk
dialog = gtk.MessageDialog(type = gtk.MESSAGE_ERROR,
buttons = gtk.BUTTONS_CLOSE,
from gi.repository import Gtk
dialog = Gtk.MessageDialog(type = Gtk.MessageType.ERROR,
buttons = Gtk.ButtonsType.CLOSE,
message_format=reason)
dialog.set_title(title)
dialog.run()
dialog.destroy()
def check_memory(anaconda, opts, display_mode=None):
reason_strict = _("%s requires %s MB of memory to install, but you only have "
"%s MB on this machine.\n")
reason_graphical = _("The %s graphical installer requires %s MB of memory, but "
"you only have %s MB.")
# pylint: disable-msg=W0621
def check_memory(anaconda, options, display_mode=None):
reason_strict = _("%(product_name)s requires %(needed_ram)s MB of memory to "
"install, but you only have %(total_ram)s MB on this machine.\n")
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'
'Press <return> to reboot your system.\n')
@ -354,6 +382,9 @@ def check_memory(anaconda, opts, display_mode=None):
"terminal.")
nolivecd_extra = _(" Starting text mode.")
if options.rescue:
return
if not display_mode:
display_mode = anaconda.displayMode
@ -362,82 +393,83 @@ def check_memory(anaconda, opts, display_mode=None):
needed_ram = int(isys.MIN_RAM / 1024)
graphical_ram = needed_ram + int(isys.GUI_INSTALL_EXTRA_RAM / 1024)
log.info("check_memory(): total:%s, needed:%s, graphical:%s" % \
(total_ram, needed_ram, graphical_ram))
log.info("check_memory(): total:%s, needed:%s, graphical:%s",
total_ram, needed_ram, graphical_ram)
if not opts.memcheck:
if not options.memcheck:
log.warning("CHECK_MEMORY DISABLED")
return
reason_args = {"product_name" : product.productName,
"needed_ram" : needed_ram,
"total_ram" : total_ram }
if needed_ram > total_ram:
from snack import SnackScreen, ButtonChoiceWindow
if opts.liveinst:
stdoutLog.warning(reason % (product.productName, needed_ram, total_ram))
gtk_warning(livecd_title, reason % (product.productName, needed_ram, total_ram))
if options.liveinst:
stdoutLog.warning(reason, **reason_args)
gtk_warning(livecd_title, reason % reason_args)
else:
reason += reboot_extra
screen = SnackScreen()
ButtonChoiceWindow(screen, _('Fatal Error'),
reason % (product.productName, needed_ram, total_ram),
reason % reason_args,
buttons = (_("OK"),))
screen.finish()
sys.exit(1)
# override display mode if machine cannot nicely run X
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
if needed_ram > total_ram:
if opts.liveinst:
if options.liveinst:
reason += livecd_extra
stdoutLog.warning(reason % (product.productName, needed_ram, total_ram))
stdoutLog.warning(reason, **reason_args)
title = livecd_title
gtk_warning(title, reason % (product.productName, needed_ram, total_ram))
gtk_warning(title, reason % reason_args)
sys.exit(1)
else:
reason += nolivecd_extra
stdoutLog.warning(reason % (product.productName, needed_ram, total_ram))
stdoutLog.warning(reason, **reason_args)
anaconda.displayMode = 't'
time.sleep(2)
def startDebugger(signum, frame):
# pylint: disable-msg=F0401
import epdb
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.spokes.askvnc import AskVNCSpoke
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
vncS = vnc.VncServer() # The vnc Server object.
vncS.anaconda = anaconda
anaconda.displayMode = opts.display_mode
anaconda.isHeadless = opts.isHeadless or iutil.isS390()
anaconda.displayMode = options.display_mode
anaconda.isHeadless = options.isHeadless or arch.isS390()
if opts.vnc:
if options.vnc:
flags.usevnc = 1
anaconda.displayMode = 'g'
vncS.password = opts.vncpassword
vncS.password = options.vncpassword
# Only consider vncconnect when vnc is a param
if opts.vncconnect:
cargs = string.split(opts.vncconnect, ":")
if options.vncconnect:
cargs = string.split(options.vncconnect, ":")
vncS.vncconnecthost = cargs[0]
if len(cargs) > 1 and len(cargs[1]) > 0:
if len(cargs[1]) > 0:
vncS.vncconnectport = cargs[1]
if opts.serial:
flags.serial = True
if opts.virtpconsole:
flags.virtpconsole = opts.virtpconsole
if opts.xdriver:
anaconda.xdriver = opts.xdriver
if options.xdriver:
anaconda.xdriver = options.xdriver
anaconda.writeXdriver(root="/")
if anaconda.rescue:
@ -457,48 +489,33 @@ def setupDisplay(anaconda, opts):
vncS.vncconnectport = anaconda.ksdata.vnc.port
# 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
# disable VNC question if text mode is requested and this is a ks install
if anaconda.displayMode == 't' and flags.automatedInstall:
stdoutLog.warning("Not asking for VNC because of an automated install")
flags.vncquestion = False
# disable VNC question if we were explicitly asked for text in kickstart
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
# 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
# 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):
stdoutLog.warning("Not asking for VNC because we don't have Xvnc")
flags.vncquestion = False
if os.environ.has_key('DISPLAY'):
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?
want_x = anaconda.displayMode == 'g' and \
not (flags.preexisting_x11 or flags.usevnc)
@ -519,6 +536,26 @@ def setupDisplay(anaconda, opts):
anaconda.displayMode = 't'
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:
# The following code depends on no SIGCHLD being delivered,
# 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)
xout = open("/dev/tty5", "w")
try:
proc = subprocess.Popen(["Xorg", "-br",
"-logfile", "/tmp/X.log",
":1", "vt7", "-s", "1440", "-ac",
"-nolisten", "tcp", "-dpi", "96",
"-noreset"],
close_fds=True,
stdout=xout, stderr=xout,
preexec_fn=preexec_fn)
subprocess.Popen(["Xorg", "-br",
"-logfile", "/tmp/X.log",
":1", "vt7", "-s", "1440", "-ac",
"-nolisten", "tcp", "-dpi", "96",
"-noreset"],
close_fds=True,
stdout=xout, stderr=xout,
preexec_fn=preexec_fn)
signal.pause()
os.environ["DISPLAY"] = ":1"
@ -562,7 +599,8 @@ def setupDisplay(anaconda, opts):
signal.signal(signal.SIGUSR1, old_sigusr1)
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 \
flags.vncquestion and not anaconda.ksdata.vnc.enabled:
@ -582,18 +620,14 @@ def setupDisplay(anaconda, opts):
doStartupX11Actions()
# with X running we can initialize the UI interface
anaconda.initInterface()
anaconda.initInterface(addons)
anaconda.instClass.configure(anaconda)
def prompt_for_ssh():
# Do some work here to get the ip addr / hostname to pass
# to the user.
from pyanaconda import network
from pyanaconda import isys
import socket
import gettext
_ = lambda x: gettext.ldgettext("anaconda", x)
ip = network.getFirstRealIP()
@ -605,10 +639,9 @@ def prompt_for_ssh():
try:
hinfo = socket.gethostbyaddr(ipstr)
except Exception as e:
stdoutLog.debug("Exception caught trying to get host name of %s: %s" %
(ipstr, e))
name = network.getDefaultHostname(None)
except socket.herror as e:
stdoutLog.debug("Exception caught trying to get host name of %s: %s", ipstr, e)
name = network.getHostname()
else:
if len(hinfo) == 3:
name = hinfo[0]
@ -624,16 +657,31 @@ def prompt_for_ssh():
connxinfo = None
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:
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__":
print "Starting installer, one moment..."
# Allow a file to be loaded as early as possible
try:
# pylint: disable-msg=F0401,W0611
import updates_disk_hook
except ImportError:
pass
@ -642,11 +690,25 @@ if __name__ == "__main__":
setupPythonUpdates()
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
from pyanaconda.flags import flags
from pyanaconda.flags import flags, can_touch_runtime_system
(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.
import logging
@ -654,6 +716,9 @@ if __name__ == "__main__":
anaconda_log.init()
anaconda_log.logger.setupVirtio()
from pyanaconda import network
network.setup_ifcfg_log()
log = logging.getLogger("anaconda")
stdoutLog = logging.getLogger("anaconda.stdout")
@ -661,10 +726,18 @@ if __name__ == "__main__":
stdoutLog.error("anaconda must be run as root.")
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
uname = os.uname()
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()
sys.exit(0)
# If we get RUNKS, we default to cmdline display mode, because nothing
@ -672,7 +745,7 @@ if __name__ == "__main__":
if "RUNKS" in flags.cmdline:
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
# with flags.cmdline *everywhere* it appears...
@ -682,12 +755,11 @@ if __name__ == "__main__":
# pull this in to get product name and versioning
from pyanaconda import product
from pyanaconda.constants import ROOT_PATH, DEFAULT_LANG
from pyanaconda import isys
isys.initLog()
import signal, string, time
import signal, string
from pyanaconda import iutil
from pyanaconda import vnc
@ -702,16 +774,14 @@ if __name__ == "__main__":
else:
print "anaconda %s (pre-release) started." % verdesc
import gettext
_ = lambda x: gettext.ldgettext("anaconda", x)
from pyanaconda import Anaconda
from pyanaconda.anaconda import Anaconda
anaconda = Anaconda()
iutil.setup_translations(gettext)
# 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.SIGTERM, lambda num, frame: sys.exit(1))
setupEnvironment()
# make sure we have /var/log soon, some programs fail to start without it
@ -763,8 +833,7 @@ if __name__ == "__main__":
if opts.module:
for mod in opts.module:
(path, name) = string.split(mod, ":")
anaconda.extraModules.append((path, name))
anaconda.extraModules.append(mod.split(":"))
if opts.ibft:
flags.ibft = 1
@ -778,12 +847,19 @@ if __name__ == "__main__":
if opts.armPlatform:
flags.armPlatform = opts.armPlatform
if opts.extlinux:
flags.extlinux = opts.extlinux
if opts.dnf:
flags.dnf = opts.dnf
# set flags
flags.dmraid = opts.dmraid
flags.mpath = opts.mpath
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()
# setup links required for all install types
@ -792,7 +868,7 @@ if __name__ == "__main__":
try:
if os.path.exists("/mnt/runtime/etc/" + i):
os.symlink ("../mnt/runtime/etc/" + i, "/etc/" + i)
except:
except OSError:
pass
if opts.debug:
@ -801,34 +877,38 @@ if __name__ == "__main__":
if opts.rescue:
anaconda.rescue = True
log.info("anaconda called with cmdline = %s" %(sys.argv,))
log.info("Default encoding = %s " % sys.getdefaultencoding())
log.info("anaconda called with cmdline = %s", sys.argv)
log.info("Default encoding = %s ", sys.getdefaultencoding())
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
# execute) that now. Otherwise, load in defaults from kickstart files
# shipped with the installation media.
ksdata = None
if opts.ksfile:
flags.automatedInstall = True
files = [opts.ksfile]
flags.eject = False
ksFiles = [opts.ksfile]
else:
files = ["/tmp/updates/interactive-defaults.ks",
"/usr/share/anaconda/interactive-defaults.ks"]
ksFiles = ["/tmp/updates/interactive-defaults.ks",
"/usr/share/anaconda/interactive-defaults.ks"]
for f in files:
if not os.path.exists(f):
for ks in ksFiles:
if not os.path.exists(ks):
continue
kickstart.preScriptPass(f)
ksdata = kickstart.parseKickstart(f)
kickstart.preScriptPass(ks)
ksdata = kickstart.parseKickstart(ks)
# Only load the first defaults file we find.
break
if not ksdata:
ksdata = kickstart.AnacondaKSHandler()
ksdata = kickstart.AnacondaKSHandler(addon_paths["ks"])
if ksdata.rescue.rescue:
anaconda.rescue = True
@ -845,7 +925,7 @@ if __name__ == "__main__":
if not ksdata.keyboard.keyboard:
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)
# Some post-install parts of anaconda are implemented as kickstart
@ -853,19 +933,24 @@ if __name__ == "__main__":
kickstart.appendPostScripts(ksdata)
# cmdline flags override kickstart settings
ksdata.method.proxy = anaconda.proxy
ksdata.method.noverifyssl = flags.noverifyssl
if anaconda.proxy:
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
if anaconda.methodstr and not ksdata.method.method:
if anaconda.methodstr and not ksdata.method.seen:
if anaconda.methodstr.startswith("cdrom"):
ksdata.method.method = "cdrom"
elif anaconda.methodstr.startswith("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.dir = path
ksdata.method.opts = options
ksdata.method.opts = nfsOptions
elif anaconda.methodstr.startswith("hd:"):
ksdata.method.method = "harddrive"
url = anaconda.methodstr.split(":", 1)[1]
@ -884,43 +969,58 @@ if __name__ == "__main__":
anaconda.methodstr.startswith("ftp"):
ksdata.method.method = "url"
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"):
ksdata.method.method = "livecd"
ksdata.method.method = "harddrive"
device = anaconda.methodstr.split(":", 1)[1]
ksdata.method.partition = os.path.normpath(device)
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.
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
# dig through supported translations to figure out what the user
# meant.
if not opts.lang in langObj.translations:
foundLang = False
requested_lang = opts.lang or ksdata.lang.lang or env_lang
for trans in langObj.translations.keys():
if opts.lang in expand_langs(trans):
opts.lang = trans
foundLang = True
break
if requested_lang:
locales = localization.get_language_locales(requested_lang)
if locales:
localization.setup_locale(locales[0], ksdata.lang)
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:
opts.lang = "en_US.UTF-8"
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()
import blivet
blivet.enable_installer_mode()
# 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
if anaconda.displayMode == 'c':
@ -931,59 +1031,87 @@ if __name__ == "__main__":
image_spec = image.rsplit(":", 1)
path = image_spec[0]
if len(image_spec) == 2 and image_spec[1].strip():
name = image_spec[1].strip()
imageName = image_spec[1].strip()
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():
name = "diskimg%d" % image_count
if "/" in imageName or imageName in anaconda.storage.config.diskImages.keys():
imageName = "diskimg%d" % image_count
log.info("naming disk image '%s' '%s'" % (path, name))
anaconda.storage.config.diskImages[name] = path
log.info("naming disk image '%s' '%s'", path, imageName)
anaconda.storage.config.diskImages[imageName] = path
image_count += 1
flags.imageInstall = True
if image_count:
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
if anaconda.displayMode == 'g':
# comment out the next line to make exceptions non-fatal
anaconda.mehConfig = exception.initExceptionHandling(anaconda)
# comment out the next line to make exceptions non-fatal
anaconda.mehConfig = exception.initExceptionHandling(anaconda)
# add our own additional signal handlers
signal.signal(signal.SIGUSR1, lambda signum, frame:
exception.test_exception_handling())
signal.signal(signal.SIGUSR2, lambda signum, frame: anaconda.dumpState())
if opts.lang:
# 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 blivet import storageInitialize
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:
from pyanaconda.rescue import doRescue
doRescue(anaconda.rescue_mount, ksdata, anaconda.platform)
rescue.doRescue(anaconda.intf, anaconda.rescue_mount, ksdata)
else:
cleanPStore()
threadMgr.add(AnacondaThread(name="AnaStorageThread", target=storageInitialize, args=(anaconda.storage, ksdata, anaconda.protected)))
threadMgr.add(AnacondaThread(name="AnaNetworkThread", target=networkInitialize, args=(ksdata,)))
threadMgr.add(AnacondaThread(name="AnaPayloadThread", target=payloadInitialize, args=(anaconda.storage, ksdata, anaconda.payload)))
networkInitialize(ksdata)
if not flags.dirInstall:
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)
# setup ntp servers and start NTP daemon if not requested otherwise
if (not flags.imageInstall) and anaconda.ksdata.timezone.ntpservers:
ntp.save_servers_to_config(anaconda.ksdata.timezone.ntpservers)
# check if geolocation should be enabled for this type of installation
use_geolocation = True
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
# 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. */
#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. */
#undef HAVE_LIMITS_H
@ -346,6 +343,10 @@
such a type exists and the standard includes do not define it. */
#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. */
#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
# 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
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
@ -47,7 +47,7 @@ for cc_temp in $CC""; do
done
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=
if test "$GCC" = yes; then
@ -64,7 +64,7 @@ else
;;
esac
;;
mingw* | cygwin* | pw32* | os2*)
mingw* | cygwin* | pw32* | os2* | cegcc*)
;;
hpux9* | hpux10* | hpux11*)
wl='-Wl,'
@ -76,7 +76,13 @@ else
;;
linux* | k*bsd*-gnu)
case $cc_basename in
icc* | ecc*)
ecc*)
wl='-Wl,'
;;
icc* | ifort*)
wl='-Wl,'
;;
lf95*)
wl='-Wl,'
;;
pgcc | pgf77 | pgf90)
@ -124,7 +130,7 @@ else
esac
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_separator=
@ -132,7 +138,7 @@ hardcode_direct=no
hardcode_minus_L=no
case "$host_os" in
cygwin* | mingw* | pw32*)
cygwin* | mingw* | pw32* | cegcc*)
# FIXME: the MSVC++ port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
@ -158,7 +164,7 @@ if test "$with_gnu_ld" = yes; then
# option of GNU ld is called -rpath, not --rpath.
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
case "$host_os" in
aix3* | aix4* | aix5*)
aix[3-9]*)
# On AIX/PPC, the GNU linker is very broken
if test "$host_cpu" != ia64; then
ld_shlibs=no
@ -182,7 +188,7 @@ if test "$with_gnu_ld" = yes; then
ld_shlibs=no
fi
;;
cygwin* | mingw* | pw32*)
cygwin* | mingw* | pw32* | cegcc*)
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
hardcode_libdir_flag_spec='-L$libdir'
@ -254,7 +260,7 @@ else
hardcode_direct=unsupported
fi
;;
aix4* | aix5*)
aix[4-9]*)
if test "$host_cpu" = ia64; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
@ -264,7 +270,7 @@ else
# Test if we are trying to use run time linking or normal
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
# 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
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
aix_use_runtimelinking=yes
@ -326,7 +332,7 @@ else
;;
bsdi[45]*)
;;
cygwin* | mingw* | pw32*)
cygwin* | mingw* | pw32* | cegcc*)
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
@ -494,7 +500,7 @@ else
fi
# 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
# 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
@ -505,7 +511,7 @@ case "$host_os" in
aix3*)
library_names_spec='$libname.a'
;;
aix4* | aix5*)
aix[4-9]*)
library_names_spec='$libname$shrext'
;;
amigaos*)
@ -517,7 +523,7 @@ case "$host_os" in
bsdi[45]*)
library_names_spec='$libname$shrext'
;;
cygwin* | mingw* | pw32*)
cygwin* | mingw* | pw32* | cegcc*)
shrext=.dll
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)
AC_PREREQ([2.63])
AC_INIT([anaconda], [18.37.11], [anaconda-devel-list@redhat.com])
AM_INIT_AUTOMAKE([foreign no-dist-gzip dist-bzip2])
AC_INIT([anaconda], [20.25.16], [anaconda-devel-list@redhat.com])
AM_INIT_AUTOMAKE([foreign no-dist-gzip dist-bzip2 tar-ustar])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_MACRO_DIR([m4])
@ -38,7 +38,33 @@ AC_PROG_LN_S
AC_PROG_MAKE_SET
AC_PROG_LIBTOOL
# Check for the intltool programs
# These checks and subsitutions are adapted IT_PROG_INTLTOOL provided in
# intltool.m4, but without the parts where it breaks gettext.
AC_PATH_PROG([INTLTOOL_EXTRACT], [intltool-extract])
AC_PATH_PROG([INTLTOOL_MERGE], [intltool-merge])
AS_IF([test -z "$INTLTOOL_EXTRACT" -o -z "$INTLTOOL_MERGE"],
[AC_MSG_ERROR([*** intltool not found])])
# Add the bits for Makefile rules
INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))'
INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))'
INTLTOOL__v_MERGE_0='@echo " ITMRG " $@;'
INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))'
intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))'
intltool__v_merge_options_0='-q'
AC_SUBST(INTLTOOL_V_MERGE)
AC_SUBST(INTLTOOL__v_MERGE_)
AC_SUBST(INTLTOOL__v_MERGE_0)
AC_SUBST(INTLTOOL_V_MERGE_OPTIONS)
AC_SUBST(intltool__v_merge_options_)
AC_SUBST(intltool__v_merge_options_0)
INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
AC_SUBST(INTLTOOL_DESKTOP_RULE)
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.18.1])
# Checks for libraries.
AC_CHECK_LIB([X11], [XGetWindowAttributes],
@ -49,18 +75,6 @@ AC_CHECK_LIB([audit], [audit_open],
[AC_SUBST(AUDIT_LIBS, [-laudit])],
[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_SUBST(ZLIB_LIBS, [-lz])],
[AC_MSG_FAILURE([*** libz not usable.])])
@ -93,6 +107,7 @@ AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT64_T
AC_TYPE_UINT8_T
AC_TYPE_INT64_T
# Checks for library functions.
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.])])
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
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([LIBNL], [libnl-1 >= 1.0])
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([LIBCURL], [libcurl >= 7.19.5])
PKG_CHECK_MODULES([RPM], [rpm >= 4.8.0])
PKG_CHECK_MODULES([LIBARCHIVE], [libarchive >= 2.7.902a])
PKG_CHECK_MODULES([RPM], [rpm >= 4.10.0])
PKG_CHECK_MODULES([LIBARCHIVE], [libarchive >= 3.0.4])
# Set $RPM_OPT_FLAGS if we don't have it
if test -z $RPM_OPT_FLAGS ; then
@ -135,32 +160,12 @@ else
CFLAGS="$CFLAGS $RPM_OPT_FLAGS"
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
AC_ARG_ENABLE(nfs,
AC_HELP_STRING([--enable-nfs],
[enable NFS support (default is yes)]),
[nfs=$enableval],
[nfs=yes])
if test x$selinux = xyes ; then
AC_SUBST(NFS_CFLAGS, [-DHAVE_NFS])
fi
# IPv6 support can be enabled or disabled
AC_ARG_ENABLE(ipv6,
@ -203,36 +208,15 @@ CFLAGS="`cflags_filter $CFLAGS`"
LIBS=
# Get the release number from the spec file
rel="`awk '/Release:/ { split($2, r, "%"); print r[[1]] }' anaconda.spec.in`"
rel="`awk '/Release:/ { split($2, r, "%"); print r[[1]] }' $srcdir/anaconda.spec`"
AC_SUBST(PACKAGE_RELEASE, [$rel])
# Set $(ARCH) and arch-related tests
s_arch="`uname -m | sed -e s/i.86/i386/ -e s/sparc.*/sparc/ -e s/ppc.*/ppc/`"
AC_SUBST(ARCH, [$s_arch])
# Perform arch related tests
AC_CANONICAL_BUILD
s_arch="`echo $build_cpu | sed -e s/i.86/i386/ -e s/powerpc.*/ppc/`"
AM_CONDITIONAL(IS_LIVEINST_ARCH,
[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])
[test x$s_arch = xppc || test x$s_arch = xi386 || test x$s_arch = xx86_64])
AC_CONFIG_SUBDIRS([widgets])
@ -267,14 +251,12 @@ AC_CONFIG_FILES([Makefile
pyanaconda/Makefile
pyanaconda/isys/Makefile
pyanaconda/packaging/Makefile
pyanaconda/storage/Makefile
pyanaconda/storage/devicelibs/Makefile
pyanaconda/storage/formats/Makefile
pyanaconda/ui/Makefile
pyanaconda/ui/lib/Makefile
pyanaconda/ui/gui/categories/Makefile
pyanaconda/ui/gui/hubs/Makefile
pyanaconda/ui/gui/spokes/Makefile
pyanaconda/ui/gui/spokes/advstorage/Makefile
pyanaconda/ui/gui/spokes/lib/Makefile
pyanaconda/ui/gui/tools/Makefile
pyanaconda/ui/gui/Makefile
@ -283,21 +265,8 @@ AC_CONFIG_FILES([Makefile
pyanaconda/ui/tui/spokes/Makefile
pyanaconda/ui/tui/tools/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
tests/Makefile
utils/Makefile
utils/log_picker/Makefile
utils/log_picker/sending/Makefile])
utils/dd/Makefile])
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 = *~
ksdir = $(datadir)/$(PACKAGE_NAME)
dist_ks_DATA = interactive-defaults.ks
udevdir = $(prefix)/lib/udev/rules.d
dist_udev_DATA = 70-anaconda.rules
tmuxdir = $(datadir)/$(PACKAGE_NAME)
dist_tmux_DATA = tmux.conf
dist_pkgdata_DATA = interactive-defaults.ks \
tmux.conf \
anaconda-gtk.css
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>
commandstubsdir = $(datadir)/$(PACKAGE_NAME)
dist_commandstubs_SCRIPTS = *-stub
dist_commandstubs_SCRIPTS = $(srcdir)/*-stub
MAINTAINERCLEANFILES = Makefile.in

View File

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

View File

@ -35,12 +35,7 @@ CLEANFILES = liveinst.desktop *.h
MAINTAINERCLEANFILES = Makefile.in
intltool_merge_verbose = $(intltool_merge_verbose_$(V))
intltool_merge_verbose_ = $(intltool_merge_verbose_$(AM_DEFAULT_VERBOSITY))
intltool_merge_verbose_0 = @echo " MERGE "$@;
liveinst.desktop: liveinst.desktop.in
$(intltool_merge_verbose)LC_ALL=C intltool-merge -q -d -u $(top_srcdir)/po liveinst.desktop.in liveinst.desktop
@INTLTOOL_DESKTOP_RULE@
install-exec-local:
mkdir -p $(DESTDIR)$(bindir)

View File

@ -27,9 +27,4 @@ CLEANFILES = fedora-welcome.desktop
MAINTAINERCLEANFILES = Makefile.in
intltool_merge_verbose = $(intltool_merge_verbose_$(V))
intltool_merge_verbose_ = $(intltool_merge_verbose_$(AM_DEFAULT_VERBOSITY))
intltool_merge_verbose_0 = @echo " MERGE "$@;
fedora-welcome.desktop: fedora-welcome.desktop.in
$(intltool_merge_verbose)LC_ALL=C intltool-merge -q -d -u $(top_srcdir)/po fedora-welcome.desktop.in fedora-welcome.desktop
@INTLTOOL_DESKTOP_RULE@

View File

@ -18,10 +18,6 @@
# 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
IMAGE_INSTALL=0
RESCUE=0
@ -43,7 +39,9 @@ fi
# Try to sort out where the live device is
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"
fi
fi
@ -56,7 +54,7 @@ fi
# 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
# 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)
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
anaconda-cleanup $ANACONDA $*
/sbin/udevadm control --env=ANACONDA=1
# Set up the updates, if provided.
if [ ! -z "$UPDATES" ]; then
if [ -e /tmp/updates.img -o -e /tmp/updates ]; then

View File

@ -18,6 +18,6 @@
# Author: David Cantrell <dcantrell@redhat.com>
pixmapsdir = $(datadir)/$(PACKAGE_NAME)/pixmaps
dist_pixmaps_DATA = *.png
dist_pixmaps_DATA = $(srcdir)/*.png $(srcdir)/*.svg
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/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/
journalctl -b > $ANA_INSTALL_PATH/var/log/anaconda/anaconda.journal.log
chmod 0600 /mnt/sysimage/var/log/anaconda/*
%end

View File

@ -19,4 +19,4 @@
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
MAINTAINERCLEAFILES = Makefile.in
MAINTAINERCLEANFILES = Makefile.in

View File

@ -26,11 +26,8 @@ dist_systemd_DATA = anaconda.service \
anaconda-tmux@.service \
anaconda-shell@.service \
instperf.service \
anaconda-sshd.service \
anaconda-cleanup-initramfs.service
anaconda-sshd.service
dist_generator_SCRIPTS = anaconda-generator
dist_sbin_SCRIPTS = anaconda-cleanup-initramfs
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]
Description=the anaconda installation program
Wants=instperf.service rsyslog.service udev-settle.service NetworkManager.service
After=instperf.service rsyslog.service udev-settle.service NetworkManager.service anaconda-sshd.service
Wants=instperf.service rsyslog.service systemd-udev-settle.service NetworkManager.service
After=instperf.service rsyslog.service systemd-udev-settle.service NetworkManager.service anaconda-sshd.service
Requires=anaconda.service
[Service]

View File

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

View File

@ -17,13 +17,10 @@
#
# 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 \
threads.txt command-line.txt gettext.txt transifex.txt
threads.txt gettext.txt transifex.txt
CLEANFILES = api *.xml
MAINTAINERCLEANFILES = Makefile.in command-line.txt
command-line.txt:
curl -4 -A "anaconda-build" -o command-line.txt "http://fedoraproject.org/w/index.php?title=Anaconda_Boot_Options&action=raw"
MAINTAINERCLEANFILES = Makefile.in

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
GTK+ presents the biggest challenge for threads, but it's not
impossible. We will be allowing GTK+ calls from any thread, so we
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:
impossible. When you call gtk.main(), you need to call it like this:
gtk.threads_enter()
gtk.main()

View File

@ -90,40 +90,40 @@ it to use.
CREATING A NEW ANACONDA BRANCH
------------------------------
When we make a new branch, we need to branch the translation files. Do this
with:
When we make a new branch, we need to branch the translation files.
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"
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'.
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"
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
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
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:
Now you can run:
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
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.
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 \
kickstart-genrules.sh \
updates-genrules.sh \
anaconda-udevprop.sh \
anaconda-ks-sendheaders.sh \
anaconda-netroot.sh \
anaconda-diskroot \
@ -38,7 +37,16 @@ dist_dracut_SCRIPTS = module-setup.sh \
fetch-kickstart-disk \
fetch-updates-disk \
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

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
# Copy over cmdline(.d) files from the initrd to /run before pivot
mkdir -p /run/install/cmdline.d
cp /etc/cmdline.d/* /run/install/cmdline.d/
cp /etc/cmdline /run/install/
for f in /etc/cmdline.d/*; do
[ -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
p=$(str_replace "$livedev" "-" '\x2d')
systemctl start checkisomd5@${p}.service
status=$(systemctl -p ExecMainStatus show checkisomd5@${p}.service)
splitsep "=" "$status" ignore rc
else
checkisomd5 --verbose $livedev
rc=$?
fi
if [ $? -ne 0 ]; then
if [ "$rc" == "1" ]; then
die "CD check failed!"
exit 1
fi

View File

@ -43,6 +43,17 @@ find_runtime() {
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"
isodir="/run/install/isodir"
rulesfile="/etc/udev/rules.d/90-anaconda.rules"
@ -95,13 +106,13 @@ anaconda_auto_updates() {
unpack_updates_img $dir/updates.img /updates
fi
if [ -e $dir/product.img ]; then
unpack_updates_img $dir/product.img /updates/tmp/product
unpack_updates_img $dir/product.img /updates
fi
}
# Unpack an image into the given dir.
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,
# which is why we use a tmpdir and copytree (which doesn't clobber)
unpack_img $img $tmpdir
@ -192,7 +203,7 @@ run_kickstart() {
# replay udev events to trigger actions
if [ "$do_disk" ]; then
. $hookdir/pre-udev/*repo-genrules.sh
. $hookdir/pre-trigger/*repo-genrules.sh
udevadm control --reload
udevadm trigger --action=change --subsystem-match=block
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)
[ -n "$updates" ] && unpack_updates_img $updates /updates
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
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
tmpmnt="$(mkuniqdir /run/install tmpmnt)"
if mount -o ro $dev $tmpmnt; then
cp $tmpmnt$path /tmp/ks.cfg
cp $tmpmnt/$path /tmp/ks.cfg
umount $tmpmnt
rmdir $tmpmnt
fi

View File

@ -36,13 +36,14 @@ if [ "$kickstart" = "nfs:auto" ]; then
fi
done
} < /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"
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"
if fetch_url "$kickstart" /tmp/ks.cfg; then
parse_kickstart /tmp/ks.cfg

View File

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

View File

@ -15,6 +15,12 @@ depends() {
}
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
inst "$moddir/anaconda-lib.sh" "/lib/anaconda-lib.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 28 "$moddir/parse-anaconda-net.sh"
inst_hook pre-udev 30 "$moddir/anaconda-modprobe.sh"
inst_hook pre-udev 40 "$moddir/repo-genrules.sh"
inst_hook pre-udev 40 "$moddir/kickstart-genrules.sh"
inst_hook pre-udev 40 "$moddir/updates-genrules.sh"
inst_hook pre-trigger 40 "$moddir/anaconda-udevprop.sh"
inst_hook pre-trigger 50 "$moddir/repo-genrules.sh"
inst_hook pre-trigger 50 "$moddir/kickstart-genrules.sh"
inst_hook pre-trigger 50 "$moddir/updates-genrules.sh"
inst_hook initqueue/settled 00 "$moddir/anaconda-ks-sendheaders.sh"
inst_hook initqueue/online 80 "$moddir/anaconda-netroot.sh"
inst "$moddir/anaconda-diskroot" "/sbin/anaconda-diskroot"
inst_hook pre-pivot 99 "$moddir/anaconda-copy-ks.sh"
inst_hook pre-pivot 99 "$moddir/anaconda-copy-cmdline.sh"
inst_hook pre-pivot 50 "$moddir/anaconda-copy-ks.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
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-updates-disk" "/sbin/fetch-updates-disk"
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
$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
*.so) inst_library $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"
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)
export ksdevice=""
ksdev_val=$(getarg ksdevice=)
@ -16,15 +25,20 @@ if [ -n "$ksdev_val" ]; then
ibft)
warn "'ksdevice=ibft' is deprecated. Using 'ip=ibft' instead."
echo "ip=ibft" > $net_conf
ksdevice="ibft0"
;;
bootif)
warn "'ksdevice=bootif' does nothing (BOOTIF is used by default if present)"
;;
??:??:??:??:??:??)
warn "'ksdevice=<MAC>' is deprecated. Using 'ifname=ksdev0:<MAC>' instead."
ksdevice="ksdev0"
echo "ifname=$ksdevice:$ksdev_val" > $net_conf
BOOTIF=$(getarg 'BOOTIF=')
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" ;;
esac

View File

@ -86,7 +86,6 @@ check_removed_arg ethtool
# interactive junk in initramfs
# (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."
# lang & keymap
@ -125,8 +124,14 @@ if updates=$(getarg updates inst.updates); then
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
echo 'save_netinfo $netif' > $hookdir/initqueue/online/anaconda-ifcfg.sh
# Driver Update Disk
warn_renamed_arg "dd" "inst.dd"
# re-read the commandline args
unset CMDLINE

View File

@ -13,6 +13,8 @@
import sys, os
import logging
import shutil
import uuid
from pykickstart.parser import KickstartParser, preprocessKickstart
from pykickstart.version import returnClassForVersion
from pykickstart.errors import KickstartError
@ -50,25 +52,30 @@ proc_cmdline = read_cmdline("/proc/cmdline")
# Here are the kickstart commands we care about:
class Method(commands.method.F14_Method):
'''install methods: cdrom, harddrive, nfs, url'''
class Cdrom(commands.cdrom.FC3_Cdrom):
def dracut_args(self, args, lineno, obj):
if self.method == "cdrom":
method="cdrom"
elif self.method == "harddrive":
if self.biospart:
method="bd:%s:%s" % (self.partition, self.dir)
else:
method="hd:%s:%s" % (self.partition, self.dir)
elif self.method == "nfs":
method="nfs:%s:%s" % (self.server, self.dir)
if self.opts:
method += ":%s" % self.opts
elif self.method == "url":
# FIXME: self.proxy, self.noverifyssl
method = self.url
return "inst.repo=cdrom"
class HardDrive(commands.harddrive.FC3_HardDrive):
def dracut_args(self, args, lineno, obj):
if self.biospart:
return "inst.repo=bd:%s:%s" % (self.partition, self.dir)
else:
return "inst.repo=hd:%s:%s" % (self.partition, self.dir)
class NFS(commands.nfs.FC6_NFS):
def dracut_args(self, args, lineno, obj):
method="nfs:%s:%s" % (self.server, self.dir)
if self.opts:
method += ":%s" % self.opts
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):
def dracut_args(self, args, lineno, obj):
if self.url == "floppy":
@ -91,7 +98,7 @@ class DriverDisk(commands.driverdisk.F14_DriverDisk):
if 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):
'''
NOTE: The first 'network' line get special treatment:
@ -138,13 +145,18 @@ class DisplayMode(commands.displaymode.FC3_DisplayMode):
elif self.displayMode == DISPLAY_MODE_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 = {
'cdrom': Method,
'harddrive': Method,
'nfs': Method,
'url': Method,
'cdrom': Cdrom,
'harddrive': HardDrive,
'nfs': NFS,
'url': URL,
'updates': Updates,
'mediacheck': MediaCheck,
'driverdisk': DriverDisk,
@ -152,6 +164,7 @@ dracutCmds = {
'cmdline': DisplayMode,
'graphical': DisplayMode,
'text': DisplayMode,
'bootloader': Bootloader,
}
handlerclass = returnClassForVersion()
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.'''
line = []
ip=""
autoconf=""
if is_mac(net.device): # this is a MAC - find the interface name
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..
if net.bootProto in (BOOTPROTO_DHCP, BOOTPROTO_BOOTP):
ip="dhcp"
autoconf="dhcp"
elif net.bootProto == BOOTPROTO_IBFT:
ip="ibft"
autoconf="ibft"
elif net.bootProto == BOOTPROTO_QUERY:
log.error("'%s': --bootproto=query is deprecated", " ".join(args))
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)
else:
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":
ip="auto6"
autoconf="auto6"
elif net.ipv6 == "dhcp":
ip="dhcp6"
autoconf="dhcp6"
elif net.ipv6:
ip="[{0.ipv6}]::{0.gateway}:{0.netmask}:" \
"{0.hostname}:{0.device}:none".format(net)
ip="[{0.ipv6}]::{0.ipv6gateway}:{0.netmask}:" \
"{0.hostname}:{0.device}:none:{0.mtu}".format(net)
if net.device and not ip.endswith(":none"):
line.append("ip=%s:%s" % (net.device, ip))
else:
if autoconf:
if net.device or net.mtu:
ip="%s:%s:%s" % (net.device, autoconf, net.mtu)
else:
ip=autoconf
if ip:
line.append("ip=%s" % ip)
for ns in net.nameserver.split(","):
@ -257,7 +275,8 @@ def ksnet_to_ifcfg(net, filename=None):
dev = find_devname(dev)
if not dev:
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)
return
ifcfg = dict()
@ -267,7 +286,7 @@ def ksnet_to_ifcfg(net, filename=None):
os.makedirs("/tmp/ifcfg")
ifcfg['DEVICE'] = 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 use it to activate devcies by NM on start
ifcfg['ONBOOT'] = "yes" if net.activate else "no"
@ -285,42 +304,126 @@ def ksnet_to_ifcfg(net, filename=None):
# ipv6 settings
if net.noipv6:
ifcfg['IPV6INIT'] = "no"
elif net.ipv6:
else:
ifcfg['IPV6INIT'] = "yes"
if net.ipv6 == 'dhcp':
ifcfg['DHCPV6C'] = "yes"
elif net.ipv6 == 'auto':
ifcfg['IPV6_AUTOCONF'] = "yes" # NOTE: redundant (this is the default)
elif ':' in net.ipv6:
ifcfg['IPV6ADDR'] = net.ipv6
if net.ipv6 == 'dhcp':
ifcfg['DHCPV6C'] = "yes"
ifcfg['IPV6_AUTOCONF'] = "no"
if net.ipv6gateway:
ifcfg['IPV6_DEFAULTGW'] = net.ipv6gateway
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
if net.mtu:
ifcfg['MTU'] = net.mtu
if net.nameserver:
ifcfg['DNS1'] = net.nameserver
for i, ip in enumerate(net.nameserver.split(",")):
ifcfg["DNS%d" % (i+1)] = ip
if net.nodefroute:
ifcfg['DEFROUTE'] = "no"
# TODO: dhcpclass, ethtool, essid/wepkey/wpakay, etc.
try:
log.info("writing ifcfg for %s", dev)
outf = open(filename, "w")
outf.write('# Generated by parse-kickstart\n')
for k,v in ifcfg.items():
outf.write("%s=%s\n" % (k,v))
outf.close()
except IOError as e:
log.error("can't write %s: %s" % (filename, str(e)))
else:
if net.bootProto == 'dhcp':
srcpath = "/tmp/dhclient.%s.lease" % dev
dstdir = "/tmp/ifcfg-leases"
dstpath = "%s/dhclient-%s-%s.lease" % (dstdir, ifcfg['UUID'], dev)
if os.path.exists(srcpath):
if not os.path.isdir(dstdir):
os.makedirs(dstdir)
shutil.copyfile(srcpath, dstpath)
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
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):
handler = DracutHandler()
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)
processed_file = preprocessKickstart(ksfile)
try:

View File

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

View File

@ -2,8 +2,7 @@
# generate udev rules for handling anaconda-specific root devices
# (just the disk-based ones - the network ones are done by netroot)
# import anaconda-lib for when_diskdev_appears
command -v when_diskdev_appears >/dev/null || . /lib/anaconda-lib.sh
. /lib/anaconda-lib.sh
case "$root" in
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
# generate udev rules for fetching updates
. /lib/anaconda-lib.sh
updates=$anac_updates
[ -n "$updates" ] || return
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)
dnl Copyright (C) 1995-2007 Free Software Foundation, Inc.
# gettext.m4 serial 63 (gettext-0.18)
dnl Copyright (C) 1995-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.
@ -15,7 +15,7 @@ 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-2006.
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
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], ,
[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], ,
[errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
])])])])
@ -123,11 +125,11 @@ AC_DEFUN([AM_GNU_GETTEXT],
gt_use_preinstalled_gnugettext=no
ifelse(gt_included_intl, yes, [
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],
nls_cv_force_use_gnu_gettext=$withval,
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"
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" \
|| 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
is requested.])
else
@ -301,9 +303,9 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
fi
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.])
AC_DEFINE(HAVE_DCGETTEXT, 1,
AC_DEFINE([HAVE_DCGETTEXT], [1],
[Define if the GNU dcgettext() function is already present or preinstalled.])
fi
@ -319,9 +321,9 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
fi
dnl Make all variables we use known to autoconf.
AC_SUBST(BUILD_INCLUDED_LIBINTL)
AC_SUBST(USE_INCLUDED_LIBINTL)
AC_SUBST(CATOBJEXT)
AC_SUBST([BUILD_INCLUDED_LIBINTL])
AC_SUBST([USE_INCLUDED_LIBINTL])
AC_SUBST([CATOBJEXT])
dnl For backward compatibility. Some configure.ins may be using this.
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.
DATADIRNAME=share
AC_SUBST(DATADIRNAME)
AC_SUBST([DATADIRNAME])
dnl For backward compatibility. Some Makefiles may be using this.
INSTOBJEXT=.mo
AC_SUBST(INSTOBJEXT)
AC_SUBST([INSTOBJEXT])
dnl For backward compatibility. Some Makefiles may be using this.
GENCAT=gencat
AC_SUBST(GENCAT)
AC_SUBST([GENCAT])
dnl For backward compatibility. Some Makefiles may be using this.
INTLOBJS=
if test "$USE_INCLUDED_LIBINTL" = yes; then
INTLOBJS="\$(GETTOBJS)"
fi
AC_SUBST(INTLOBJS)
AC_SUBST([INTLOBJS])
dnl Enable libtool support if the surrounding package wishes it.
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.
INTLLIBS="$LIBINTL"
AC_SUBST(INTLLIBS)
AC_SUBST([INTLLIBS])
dnl Make all documented variables known to autoconf.
AC_SUBST(LIBINTL)
AC_SUBST(LTLIBINTL)
AC_SUBST(POSUB)
AC_SUBST([LIBINTL])
AC_SUBST([LTLIBINTL])
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)
dnl Copyright (C) 2000-2002, 2007 Free Software Foundation, Inc.
# iconv.m4 serial 11 (gettext-0.18.1)
dnl Copyright (C) 2000-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.
@ -34,7 +34,7 @@ AC_DEFUN([AM_ICONV_LINK],
am_save_CPPFLAGS="$CPPFLAGS"
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_lib_iconv=no
AC_TRY_LINK([#include <stdlib.h>
@ -42,7 +42,7 @@ AC_DEFUN([AM_ICONV_LINK],
[iconv_t cd = iconv_open("","");
iconv(cd,NULL,NULL,NULL,NULL);
iconv_close(cd);],
am_cv_func_iconv=yes)
[am_cv_func_iconv=yes])
if test "$am_cv_func_iconv" != yes; then
am_save_LIBS="$LIBS"
LIBS="$LIBS $LIBICONV"
@ -51,14 +51,14 @@ AC_DEFUN([AM_ICONV_LINK],
[iconv_t cd = iconv_open("","");
iconv(cd,NULL,NULL,NULL,NULL);
iconv_close(cd);],
am_cv_lib_iconv=yes
am_cv_func_iconv=yes)
[am_cv_lib_iconv=yes]
[am_cv_func_iconv=yes])
LIBS="$am_save_LIBS"
fi
])
if test "$am_cv_func_iconv" = yes; then
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.
AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
am_save_LIBS="$LIBS"
if test $am_cv_lib_iconv = yes; then
LIBS="$LIBS $LIBICONV"
@ -87,6 +87,25 @@ int main ()
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. */
/* 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
fi
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.])
fi
if test "$am_cv_lib_iconv" = yes; then
@ -147,16 +166,31 @@ int main ()
LIBICONV=
LTLIBICONV=
fi
AC_SUBST(LIBICONV)
AC_SUBST(LTLIBICONV)
AC_SUBST([LIBICONV])
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
if test "$am_cv_func_iconv" = yes; then
AC_MSG_CHECKING([for iconv declaration])
AC_CACHE_VAL(am_cv_proto_iconv, [
AC_CACHE_VAL([am_cv_proto_iconv], [
AC_TRY_COMPILE([
#include <stdlib.h>
#include <iconv.h>
@ -169,12 +203,12 @@ size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, si
#else
size_t iconv();
#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=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
AC_MSG_RESULT([$]{ac_t:-
}[$]am_cv_proto_iconv)
AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
AC_MSG_RESULT([
$am_cv_proto_iconv])
AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
[Define as const if the declaration of iconv() needs const.])
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)
dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
dnl Inc.
# intldir.m4 serial 2 (gettext-0.18)
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.
@ -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 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-2003.
AC_PREREQ([2.52])
AC_PREREQ([2.50])
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])
])
dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory.
AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], [])

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)
dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
# lib-ld.m4 serial 4 (gettext-0.18)
dnl Copyright (C) 1996-2003, 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.
@ -10,7 +10,7 @@ dnl with libtool.m4.
dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
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.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
@ -23,7 +23,7 @@ with_gnu_ld=$acl_cv_prog_gnu_ld
dnl From libtool-1.4. Sets the variable 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]],
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
AC_REQUIRE([AC_PROG_CC])dnl
@ -59,7 +59,7 @@ if test "$GCC" = yes; then
# Canonicalize the path of ld
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
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
test -z "$LD" && LD="$ac_prog"
;;
@ -77,7 +77,7 @@ elif test "$with_gnu_ld" = yes; then
else
AC_MSG_CHECKING([for non-GNU ld])
fi
AC_CACHE_VAL(acl_cv_path_LD,
AC_CACHE_VAL([acl_cv_path_LD],
[if test -z "$LD"; then
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
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.
case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
*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
fi
done
@ -101,9 +101,9 @@ else
fi])
LD="$acl_cv_path_LD"
if test -n "$LD"; then
AC_MSG_RESULT($LD)
AC_MSG_RESULT([$LD])
else
AC_MSG_RESULT(no)
AC_MSG_RESULT([no])
fi
test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
AC_LIB_PROG_LD_GNU

View File

@ -1,12 +1,12 @@
# lib-link.m4 serial 13 (gettext-0.17)
dnl Copyright (C) 2001-2007 Free Software Foundation, Inc.
# lib-link.m4 serial 21 (gettext-0.18)
dnl Copyright (C) 2001-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.54)
AC_PREREQ([2.54])
dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
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_RPATH])
define([Name],[translit([$1],[./-], [___])])
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
pushdef([Name],[translit([$1],[./-], [___])])
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
AC_LIB_LINKFLAGS_BODY([$1], [$2])
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 results of this search when this library appears as a dependency.
HAVE_LIB[]NAME=yes
undefine([Name])
undefine([NAME])
popdef([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 implicit dependencies, together with the specified include files and
dnl the ability to compile and link the specified testcode. If found, it
dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
dnl the ability to compile and link the specified testcode. The missing-message
dnl defaults to 'no' and may contain additional hints for the user.
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 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
@ -57,9 +58,9 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
[
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
AC_REQUIRE([AC_LIB_RPATH])
define([Name],[translit([$1],[./-], [___])])
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
pushdef([Name],[translit([$1],[./-], [___])])
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
dnl accordingly.
@ -73,13 +74,25 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
ac_save_LIBS="$LIBS"
LIBS="$LIBS $LIB[]NAME"
AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
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"
])
if test "$ac_cv_lib[]Name" = yes; then
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_RESULT([$LIB[]NAME])
else
@ -95,8 +108,8 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
AC_SUBST([LIB]NAME)
AC_SUBST([LTLIB]NAME)
AC_SUBST([LIB]NAME[_PREFIX])
undefine([Name])
undefine([NAME])
popdef([NAME])
popdef([Name])
])
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_CANONICAL_HOST]) dnl we use $host
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" \
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
. ./conftest.sh
@ -131,11 +144,32 @@ AC_DEFUN([AC_LIB_RPATH],
acl_hardcode_direct="$acl_cv_hardcode_direct"
acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
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],
:, 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 the libraries corresponding to explicit and implicit dependencies.
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_REQUIRE([AC_LIB_PREPARE_MULTILIB])
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
pushdef([NAME],[translit([$1],[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.
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.
use_additional=yes
AC_LIB_WITH_FINAL_PREFIX([
eval additional_includedir=\"$includedir\"
eval additional_libdir=\"$libdir\"
])
AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix],
[ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
--without-lib]N_A_M_E[-prefix don't search for lib$1 in includedir and libdir],
AC_ARG_WITH(P_A_C_K[-prefix],
[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
--without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
[
if test "X$withval" = "Xno"; then
use_additional=no
@ -169,6 +207,10 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
else
additional_includedir="$withval/include"
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
])
@ -178,6 +220,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
LTLIB[]NAME=
INC[]NAME=
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=
ltrpathdirs=
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 directory into the executable's runpath, unless it's the
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.
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
else
@ -415,7 +462,16 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
case "$found_dir" in
*/$acl_libdirstem | */$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"
;;
esac
@ -476,9 +532,11 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
dnl 3. if it's already present in $LDFLAGS or the already
dnl constructed $LIBNAME,
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=
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
case $host_os in
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"
done
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,
@ -654,7 +717,8 @@ AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
if test -n "$next"; then
dir="$next"
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"
fi
next=
@ -663,7 +727,8 @@ AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
-L) next=yes ;;
-L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
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"
fi
next= ;;

View File

@ -1,5 +1,5 @@
# lib-prefix.m4 serial 5 (gettext-0.15)
dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
# lib-prefix.m4 serial 7 (gettext-0.18)
dnl Copyright (C) 2001-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.
@ -153,33 +153,72 @@ AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
prefix="$acl_save_prefix"
])
dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing
dnl the basename of the libdir, either "lib" or "lib64".
dnl AC_LIB_PREPARE_MULTILIB creates
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],
[
dnl There is no formal standard regarding lib and lib64. The current
dnl practice is that on a system supporting 32-bit and 64-bit instruction
dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit
dnl libraries go under $prefix/lib. We determine the compiler's default
dnl mode by looking at the compiler's library search path. If at least
dnl of its elements ends in /lib64 or points to a directory whose absolute
dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the
dnl default, namely "lib".
dnl There is no formal standard regarding lib and lib64.
dnl On glibc 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/lib64 and 32-bit libraries go under $prefix/lib. We determine
dnl the compiler's default mode by looking at the compiler's library search
dnl path. If at least one of its elements ends in /lib64 or points to a
dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
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
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 ;;
*) searchdir=`cd "$searchdir" && pwd`
case "$searchdir" in
*/lib64 ) acl_libdirstem=lib64 ;;
esac ;;
acl_libdirstem2=
case "$host_os" in
solaris*)
dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
dnl symlink is missing, so we set acl_libdirstem2 too.
AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
[AC_EGREP_CPP([sixtyfour bits], [
#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
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*
;;
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*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
@ -1326,7 +1326,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
ppc64-*linux*|powerpc64-*linux*)
powerpc64le-*linux*)
LD="${LD-ld} -m elf32lppclinux"
;;
powerpc64-*linux*)
LD="${LD-ld} -m elf32ppclinux"
;;
s390x-*linux*)
@ -1345,7 +1348,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
x86_64-*linux*)
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"
;;
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)
dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc.
# nls.m4 serial 5 (gettext-0.18)
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 gives unlimited permission to copy and/or distribute it,
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 Bruno Haible <haible@clisp.cons.org>, 2000-2003.
AC_PREREQ(2.50)
AC_PREREQ([2.50])
AC_DEFUN([AM_NLS],
[
AC_MSG_CHECKING([whether NLS is requested])
dnl Default is enabled NLS
AC_ARG_ENABLE(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)
AC_MSG_RESULT([$USE_NLS])
AC_SUBST([USE_NLS])
])

View File

@ -1,5 +1,5 @@
# po.m4 serial 15 (gettext-0.17)
dnl Copyright (C) 1995-2007 Free Software Foundation, Inc.
# po.m4 serial 17 (gettext-0.18)
dnl Copyright (C) 1995-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.
@ -17,7 +17,7 @@ dnl Authors:
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
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.
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 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 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 &&
(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.
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)
dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc.
# progtest.m4 serial 6 (gettext-0.18)
dnl Copyright (C) 1996-2003, 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.
@ -16,7 +16,7 @@ dnl They are *not* in the public domain.
dnl Authors:
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.
@ -55,7 +55,7 @@ rm -f conf$$.file
# Extract the first word of "$2", so it can be a program name with args.
set dummy $2; ac_word=[$]2
AC_MSG_CHECKING([for $ac_word])
AC_CACHE_VAL(ac_cv_path_$1,
AC_CACHE_VAL([ac_cv_path_$1],
[case "[$]$1" in
[[\\/]]* | ?:[[\\/]]*)
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
$1="$ac_cv_path_$1"
if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
AC_MSG_RESULT([$]$1)
AC_MSG_RESULT([$][$1])
else
AC_MSG_RESULT(no)
AC_MSG_RESULT([no])
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.
#
@ -17,6 +17,6 @@
#
# Author: David Cantrell <dcantrell@redhat.com>
EXTRA_DIST = *.py
SUBDIRS = mock kickstart_test regex pyanaconda_test logpicker_test
MAINTAINERCLEANFILES = Makefile.in

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