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:
parent
7f2e76acb4
commit
f73b3741f0
9
anaconda/.tx/config
Normal file
9
anaconda/.tx/config
Normal 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
1282
anaconda/ABOUT-NLS
Normal file
File diff suppressed because it is too large
Load Diff
@ -19,14 +19,15 @@
|
|||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I m4
|
ACLOCAL_AMFLAGS = -I m4
|
||||||
|
|
||||||
SUBDIRS = pyanaconda po data \
|
SUBDIRS = data docs dracut po pyanaconda scripts tests widgets utils
|
||||||
tests utils scripts docs dracut widgets
|
|
||||||
|
|
||||||
EXTRA_DIST = config.rpath COPYING
|
EXTRA_DIST = config.rpath COPYING
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in config.guess config.h.in config.sub \
|
MAINTAINERCLEANFILES = Makefile.in config.guess config.h.in config.sub \
|
||||||
depcomp install-sh ltmain.sh missing ABOUT-NLS \
|
depcomp install-sh ltmain.sh missing ABOUT-NLS \
|
||||||
INSTALL aclocal.m4 configure *.pyc py-compile
|
INSTALL aclocal.m4 configure *.pyc py-compile \
|
||||||
|
m4/* config.rpath po/Makefile.in.in po/Rules-quot \
|
||||||
|
test-driver
|
||||||
|
|
||||||
CLEANFILES = *~
|
CLEANFILES = *~
|
||||||
|
|
||||||
@ -38,32 +39,39 @@ dist_sbin_SCRIPTS = anaconda
|
|||||||
|
|
||||||
ARCHIVE_TAG = $(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)
|
ARCHIVE_TAG = $(PACKAGE_NAME)-$(PACKAGE_VERSION)-$(PACKAGE_RELEASE)
|
||||||
|
|
||||||
sed_verbose = $(sed_verbose_$(V))
|
|
||||||
sed_verbose_ = $(sed_verbose_$(AM_DEFAULT_VERBOSITY))
|
|
||||||
sed_verbose_0 = @echo " SED "$@;
|
|
||||||
|
|
||||||
TX_PULL_ARGS = -a --disable-overwrite
|
TX_PULL_ARGS = -a --disable-overwrite
|
||||||
TX_PUSH_ARGS = -s
|
TX_PUSH_ARGS = -s
|
||||||
|
|
||||||
#$(PACKAGE_NAME).spec: $(PACKAGE_NAME).spec.in
|
|
||||||
# $(sed_verbose)sed -e 's/#VERSION#/$(PACKAGE_VERSION)/' < $< > $@
|
|
||||||
|
|
||||||
tag:
|
tag:
|
||||||
@git tag -s -a -m "Tag as $(ARCHIVE_TAG)" $(ARCHIVE_TAG)
|
@git tag -s -a -m "Tag as $(ARCHIVE_TAG)" $(ARCHIVE_TAG)
|
||||||
@echo "Tagged as $(ARCHIVE_TAG)"
|
@echo "Tagged as $(ARCHIVE_TAG)"
|
||||||
|
|
||||||
po-pull:
|
po-pull:
|
||||||
rm -f po/en@boldquot.gmo po/en@boldquot.po
|
rm -f $(srcdir)/po/en@boldquot.gmo $(srcdir)/po/en@boldquot.po
|
||||||
rm -f po/en@quot.gmo po/en@quot.po
|
rm -f $(srcdir)/po/en@quot.gmo $(srcdir)/po/en@quot.po
|
||||||
rpm -q transifex-client &>/dev/null || ( echo "need to run: yum install transifex-client"; exit 1 )
|
rpm -q transifex-client &>/dev/null || ( echo "need to run: yum install transifex-client"; exit 1 )
|
||||||
tx pull $(TX_PULL_ARGS)
|
tx pull $(TX_PULL_ARGS)
|
||||||
|
|
||||||
scratch: po-pull
|
scratch: po-pull
|
||||||
$(MAKE) ARCHIVE_TAG=HEAD dist
|
$(MAKE) ARCHIVE_TAG=HEAD dist
|
||||||
git checkout -- po/$(PACKAGE_NAME).pot
|
git checkout -- $(srcdir)/po/$(PACKAGE_NAME).pot
|
||||||
|
|
||||||
|
scratch-bumpver: po-pull
|
||||||
|
@opts="-n $(PACKAGE_NAME) -v $(PACKAGE_VERSION) -r $(PACKAGE_RELEASE) -b $(PACKAGE_BUGREPORT)" ; \
|
||||||
|
if [ ! -z "$(IGNORE)" ]; then \
|
||||||
|
opts="$${opts} -i $(IGNORE)" ; \
|
||||||
|
fi ; \
|
||||||
|
if [ ! -z "$(MAP)" ]; then \
|
||||||
|
opts="$${opts} -m $(MAP)" ; \
|
||||||
|
fi ; \
|
||||||
|
if [ ! -z "$(BZDEBUG)" ]; then \
|
||||||
|
opts="$${opts} -d" ; \
|
||||||
|
fi ; \
|
||||||
|
( cd $(srcdir) && scripts/makebumpver $${opts} ) || exit 1 ; \
|
||||||
|
$(MAKE) -C po $(PACKAGE_NAME).pot-update ;
|
||||||
|
|
||||||
release:
|
release:
|
||||||
$(MAKE) dist && $(MAKE) tag && git checkout -- po/$(PACKAGE_NAME).pot
|
$(MAKE) dist && $(MAKE) tag && git checkout -- $(srcdir)/po/$(PACKAGE_NAME).pot
|
||||||
|
|
||||||
api:
|
api:
|
||||||
doxygen docs/api.cfg
|
doxygen docs/api.cfg
|
||||||
@ -79,12 +87,23 @@ bumpver: po-pull
|
|||||||
if [ ! -z "$(BZDEBUG)" ]; then \
|
if [ ! -z "$(BZDEBUG)" ]; then \
|
||||||
opts="$${opts} -d" ; \
|
opts="$${opts} -d" ; \
|
||||||
fi ; \
|
fi ; \
|
||||||
scripts/makebumpver $${opts} || exit 1 ; \
|
( cd $(srcdir) && scripts/makebumpver $${opts} ) || exit 1 ; \
|
||||||
$(MAKE) -C po $(PACKAGE_NAME).pot-update ; \
|
$(MAKE) -C po $(PACKAGE_NAME).pot-update && \
|
||||||
tx push $(TX_PUSH_ARGS)
|
tx push $(TX_PUSH_ARGS)
|
||||||
|
|
||||||
|
# Install all packages specified as BuildRequires in the Anaconda specfile
|
||||||
|
# -> installs packages needed to build Anaconda
|
||||||
install-buildrequires:
|
install-buildrequires:
|
||||||
yum install $$(grep BuildRequires: anaconda.spec | cut -d ' ' -f 2)
|
srcdir="$(srcdir)" && \
|
||||||
|
: $${srcdir:=.} && \
|
||||||
|
yum install $$(grep BuildRequires: $${srcdir}/anaconda.spec.in | cut -d ' ' -f 2)
|
||||||
|
|
||||||
|
# Install all packages specified as Requires in the Anaconda specfile
|
||||||
|
# -> installs packages needed to run Anaconda and the Anaconda unit tests
|
||||||
|
install-requires:
|
||||||
|
srcdir="$(srcdir)" && \
|
||||||
|
: $${srcdir:=.} && \
|
||||||
|
yum install $$(grep Requires: $${srcdir}/anaconda.spec.in | cut -d ' ' -f 2)
|
||||||
|
|
||||||
# Generate an updates.img based on the changed files since the release
|
# Generate an updates.img based on the changed files since the release
|
||||||
# was tagged. Updates are copied to ./updates-img and then the image is
|
# was tagged. Updates are copied to ./updates-img and then the image is
|
||||||
@ -97,62 +116,59 @@ updates:
|
|||||||
if [ "$${keep}" = "Y" ]; then \
|
if [ "$${keep}" = "Y" ]; then \
|
||||||
opts="$${opts} -k" ; \
|
opts="$${opts} -k" ; \
|
||||||
fi ; \
|
fi ; \
|
||||||
scripts/makeupdates $${opts}
|
( cd $(srcdir) && scripts/makeupdates $${opts} -b '$(abs_builddir)' )
|
||||||
|
|
||||||
# UNIT TESTING TARGETS
|
# UNIT TESTING TARGETS
|
||||||
unittest:
|
|
||||||
PYTHONPATH=tests/:. nosetests --exclude=logpicker -a \!acceptance,\!slow tests/
|
|
||||||
|
|
||||||
unittests-logpicker:
|
unittests-logpicker:
|
||||||
PYTHONPATH=tests/:.:utils/ nosetests tests/logpicker_test
|
PYTHONPATH=$(builddir)/pyanaconda/isys/.libs:tests/:$(srcdir):utils/ nosetests -v old_tests/logpicker_test
|
||||||
|
|
||||||
# GUI TESTING
|
# GUI TESTING
|
||||||
runspoke:
|
runspoke:
|
||||||
ANACONDA_DATA=${PWD}/data \
|
ANACONDA_DATA=$(srcdir)/data \
|
||||||
ANACONDA_WIDGETS_OVERRIDES=${PWD}/widgets/python \
|
ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \
|
||||||
ANACONDA_WIDGETS_DATA=${PWD}/widgets/data \
|
ANACONDA_WIDGETS_DATA=$(srcdir)/widgets/data \
|
||||||
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \
|
ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
|
||||||
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \
|
PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
|
||||||
LD_LIBRARY_PATH=widgets/src/.libs \
|
LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
|
||||||
UIPATH=pyanaconda/ui/gui/ \
|
UIPATH=$(srcdir)/pyanaconda/ui/gui/ \
|
||||||
GI_TYPELIB_PATH=widgets/src/ \
|
GI_TYPELIB_PATH=$(builddir)/widgets/src/ \
|
||||||
pyanaconda/ui/gui/tools/run-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS}
|
$(srcdir)/pyanaconda/ui/gui/tools/run-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS}
|
||||||
|
|
||||||
runhub:
|
runhub:
|
||||||
ANACONDA_DATA=${PWD}/data \
|
ANACONDA_DATA=$(srcdir)/data \
|
||||||
ANACONDA_WIDGETS_OVERRIDES=${PWD}/widgets/python \
|
ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \
|
||||||
ANACONDA_WIDGETS_DATA=${PWD}/widgets/data \
|
ANACONDA_WIDGETS_DATA=$(srcdir)/widgets/data \
|
||||||
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \
|
ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
|
||||||
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \
|
PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
|
||||||
LD_LIBRARY_PATH=widgets/src/.libs \
|
LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
|
||||||
UIPATH=pyanaconda/ui/gui/ \
|
UIPATH=$(srcdir)/pyanaconda/ui/gui/ \
|
||||||
GI_TYPELIB_PATH=widgets/src/ \
|
GI_TYPELIB_PATH=$(builddir)/widgets/src/ \
|
||||||
pyanaconda/ui/gui/tools/run-hub.py ${HUB_MODULE} ${HUB_CLASS}
|
$(srcdir)/pyanaconda/ui/gui/tools/run-hub.py ${HUB_MODULE} ${HUB_CLASS}
|
||||||
|
|
||||||
runtextspoke:
|
runtextspoke:
|
||||||
ANACONDA_DATA=${PWD}/data \
|
ANACONDA_DATA=$(srcdir)/data \
|
||||||
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \
|
ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
|
||||||
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \
|
PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
|
||||||
LD_LIBRARY_PATH=widgets/src/.libs \
|
LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
|
||||||
pyanaconda/ui/tui/tools/run-text-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS}
|
$(srcdir)/pyanaconda/ui/tui/tools/run-text-spoke.py ${SPOKE_MODULE} ${SPOKE_CLASS}
|
||||||
|
|
||||||
runtexthub:
|
runtexthub:
|
||||||
ANACONDA_DATA=${PWD}/data \
|
ANACONDA_DATA=$(srcdir)/data \
|
||||||
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \
|
ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
|
||||||
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \
|
PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
|
||||||
LD_LIBRARY_PATH=widgets/src/.libs \
|
LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
|
||||||
pyanaconda/ui/tui/tools/run-text-hub.py ${HUB_MODULE} ${HUB_CLASS}
|
$(srcdir)/pyanaconda/ui/tui/tools/run-text-hub.py ${HUB_MODULE} ${HUB_CLASS}
|
||||||
|
|
||||||
|
|
||||||
runglade:
|
runglade:
|
||||||
ANACONDA_DATA=${PWD}/data \
|
ANACONDA_DATA=$(srcdir)/data \
|
||||||
ANACONDA_WIDGETS_OVERRIDES=${PWD}/widgets/python \
|
ANACONDA_WIDGETS_OVERRIDES=$(srcdir)/widgets/python \
|
||||||
ANACONDA_WIDGETS_DATA=${PWD}/widgets/data \
|
ANACONDA_WIDGETS_DATA=$(srcdir)/widgets/data \
|
||||||
ANACONDA_INSTALL_CLASSES=${PWD}/pyanaconda/installclasses \
|
ANACONDA_INSTALL_CLASSES=$(srcdir)/pyanaconda/installclasses \
|
||||||
PYTHONPATH=.:pyanaconda/isys/.libs:widgets/python/:widgets/src/.libs/ \
|
PYTHONPATH=$(srcdir):$(builddir)/pyanaconda/isys/.libs:$(srcdir)/widgets/python/:$(builddir)/widgets/src/.libs/ \
|
||||||
LD_LIBRARY_PATH=widgets/src/.libs \
|
LD_LIBRARY_PATH=$(builddir)/widgets/src/.libs \
|
||||||
UIPATH=pyanaconda/ui/gui/ \
|
UIPATH=$(srcdir)/pyanaconda/ui/gui/ \
|
||||||
GI_TYPELIB_PATH=widgets/src/ \
|
GI_TYPELIB_PATH=$(builddir)/widgets/src/ \
|
||||||
GLADE_CATALOG_SEARCH_PATH=${PWD}/widgets/glade \
|
GLADE_CATALOG_SEARCH_PATH=$(srcdir)/widgets/glade \
|
||||||
GLADE_MODULE_SEARCH_PATH=${PWD}/widgets/src/.libs \
|
GLADE_MODULE_SEARCH_PATH=$(builddir)/widgets/src/.libs \
|
||||||
glade ${GLADE_FILE}
|
glade ${GLADE_FILE}
|
||||||
|
373
anaconda/aclocal.m4
vendored
373
anaconda/aclocal.m4
vendored
@ -1,6 +1,6 @@
|
|||||||
# generated automatically by aclocal 1.12.2 -*- Autoconf -*-
|
# generated automatically by aclocal 1.13.4 -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||||
|
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
@ -11,6 +11,7 @@
|
|||||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
# PARTICULAR PURPOSE.
|
# PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
|
||||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||||
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
|
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
|
||||||
@ -19,58 +20,6 @@ You have another version of autoconf. It may work, but is not guaranteed to.
|
|||||||
If you have problems, you may need to regenerate the build system entirely.
|
If you have problems, you may need to regenerate the build system entirely.
|
||||||
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
||||||
|
|
||||||
# intlmacosx.m4 serial 3 (gettext-0.18)
|
|
||||||
dnl Copyright (C) 2004-2010 Free Software Foundation, Inc.
|
|
||||||
dnl This file is free software; the Free Software Foundation
|
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
|
||||||
dnl
|
|
||||||
dnl This file can can be used in projects which are not available under
|
|
||||||
dnl the GNU General Public License or the GNU Library General Public
|
|
||||||
dnl License but which still want to provide support for the GNU gettext
|
|
||||||
dnl functionality.
|
|
||||||
dnl Please note that the actual code of the GNU gettext library is covered
|
|
||||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
|
||||||
dnl gettext package package is covered by the GNU General Public License.
|
|
||||||
dnl They are *not* in the public domain.
|
|
||||||
|
|
||||||
dnl Checks for special options needed on MacOS X.
|
|
||||||
dnl Defines INTL_MACOSX_LIBS.
|
|
||||||
AC_DEFUN([gt_INTL_MACOSX],
|
|
||||||
[
|
|
||||||
dnl Check for API introduced in MacOS X 10.2.
|
|
||||||
AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
|
|
||||||
[gt_cv_func_CFPreferencesCopyAppValue],
|
|
||||||
[gt_save_LIBS="$LIBS"
|
|
||||||
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
|
|
||||||
AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
|
|
||||||
[CFPreferencesCopyAppValue(NULL, NULL)],
|
|
||||||
[gt_cv_func_CFPreferencesCopyAppValue=yes],
|
|
||||||
[gt_cv_func_CFPreferencesCopyAppValue=no])
|
|
||||||
LIBS="$gt_save_LIBS"])
|
|
||||||
if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
|
|
||||||
AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
|
|
||||||
[Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
|
|
||||||
fi
|
|
||||||
dnl Check for API introduced in MacOS X 10.3.
|
|
||||||
AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
|
|
||||||
[gt_save_LIBS="$LIBS"
|
|
||||||
LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
|
|
||||||
AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
|
|
||||||
[gt_cv_func_CFLocaleCopyCurrent=yes],
|
|
||||||
[gt_cv_func_CFLocaleCopyCurrent=no])
|
|
||||||
LIBS="$gt_save_LIBS"])
|
|
||||||
if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
|
|
||||||
AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
|
|
||||||
[Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
|
|
||||||
fi
|
|
||||||
INTL_MACOSX_LIBS=
|
|
||||||
if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
|
|
||||||
INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
|
|
||||||
fi
|
|
||||||
AC_SUBST([INTL_MACOSX_LIBS])
|
|
||||||
])
|
|
||||||
|
|
||||||
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
|
||||||
# serial 1 (pkg-config-0.24)
|
# serial 1 (pkg-config-0.24)
|
||||||
#
|
#
|
||||||
@ -271,24 +220,22 @@ m4_popdef([pkg_default])
|
|||||||
m4_popdef([pkg_description])
|
m4_popdef([pkg_description])
|
||||||
]) dnl PKG_NOARCH_INSTALLDIR
|
]) dnl PKG_NOARCH_INSTALLDIR
|
||||||
|
|
||||||
# Copyright (C) 2002-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2002-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 8
|
|
||||||
|
|
||||||
# AM_AUTOMAKE_VERSION(VERSION)
|
# AM_AUTOMAKE_VERSION(VERSION)
|
||||||
# ----------------------------
|
# ----------------------------
|
||||||
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
||||||
# generated from the m4 files accompanying Automake X.Y.
|
# generated from the m4 files accompanying Automake X.Y.
|
||||||
# (This private macro should not be called outside this file.)
|
# (This private macro should not be called outside this file.)
|
||||||
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
AC_DEFUN([AM_AUTOMAKE_VERSION],
|
||||||
[am__api_version='1.12'
|
[am__api_version='1.13'
|
||||||
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
|
||||||
dnl require some minimum version. Point them to the right macro.
|
dnl require some minimum version. Point them to the right macro.
|
||||||
m4_if([$1], [1.12.2], [],
|
m4_if([$1], [1.13.4], [],
|
||||||
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
[AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
@ -304,21 +251,19 @@ m4_define([_AM_AUTOCONF_VERSION], [])
|
|||||||
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
|
||||||
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
# This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
|
||||||
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
||||||
[AM_AUTOMAKE_VERSION([1.12.2])dnl
|
[AM_AUTOMAKE_VERSION([1.13.4])dnl
|
||||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||||
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
|
||||||
|
|
||||||
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
# AM_AUX_DIR_EXPAND -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2001-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 2
|
|
||||||
|
|
||||||
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
|
||||||
# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
|
# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to
|
||||||
# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
|
# '$srcdir', '$srcdir/..', or '$srcdir/../..'.
|
||||||
@ -366,14 +311,12 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
|
|||||||
|
|
||||||
# AM_CONDITIONAL -*- Autoconf -*-
|
# AM_CONDITIONAL -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1997-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 10
|
|
||||||
|
|
||||||
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
# AM_CONDITIONAL(NAME, SHELL-CONDITION)
|
||||||
# -------------------------------------
|
# -------------------------------------
|
||||||
# Define a conditional.
|
# Define a conditional.
|
||||||
@ -399,13 +342,12 @@ AC_CONFIG_COMMANDS_PRE(
|
|||||||
Usually this means the macro was only invoked conditionally.]])
|
Usually this means the macro was only invoked conditionally.]])
|
||||||
fi])])
|
fi])])
|
||||||
|
|
||||||
# Copyright (C) 1999-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 17
|
|
||||||
|
|
||||||
# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
|
# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
|
||||||
# written in clear, in which case automake, when reading aclocal.m4,
|
# written in clear, in which case automake, when reading aclocal.m4,
|
||||||
@ -591,19 +533,18 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
|
|||||||
|
|
||||||
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
# Generate code to set up dependency tracking. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1999-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 6
|
|
||||||
|
|
||||||
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
# _AM_OUTPUT_DEPENDENCY_COMMANDS
|
||||||
# ------------------------------
|
# ------------------------------
|
||||||
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
||||||
[{
|
[{
|
||||||
# Autoconf 2.62 quotes --file arguments for eval, but not when files
|
# Older Autoconf quotes --file arguments for eval, but not when files
|
||||||
# are listed without --file. Let's play safe and only enable the eval
|
# are listed without --file. Let's play safe and only enable the eval
|
||||||
# if we detect the quoting.
|
# if we detect the quoting.
|
||||||
case $CONFIG_FILES in
|
case $CONFIG_FILES in
|
||||||
@ -632,7 +573,7 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|||||||
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"`
|
||||||
test -z "$DEPDIR" && continue
|
test -z "$DEPDIR" && continue
|
||||||
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
am__include=`sed -n 's/^am__include = //p' < "$mf"`
|
||||||
test -z "am__include" && continue
|
test -z "$am__include" && continue
|
||||||
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
am__quote=`sed -n 's/^am__quote = //p' < "$mf"`
|
||||||
# Find all dependency output files, they are included files with
|
# Find all dependency output files, they are included files with
|
||||||
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
# $(DEPDIR) in their names. We invoke sed twice because it is the
|
||||||
@ -668,14 +609,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|||||||
|
|
||||||
# Do all the work for Automake. -*- Autoconf -*-
|
# Do all the work for Automake. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 19
|
|
||||||
|
|
||||||
# This macro actually does too much. Some checks are only needed if
|
# This macro actually does too much. Some checks are only needed if
|
||||||
# your package does certain things. But this isn't really a big deal.
|
# your package does certain things. But this isn't really a big deal.
|
||||||
|
|
||||||
@ -691,7 +630,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
|
|||||||
# arguments mandatory, and then we can depend on a new Autoconf
|
# arguments mandatory, and then we can depend on a new Autoconf
|
||||||
# release and drop the old call support.
|
# release and drop the old call support.
|
||||||
AC_DEFUN([AM_INIT_AUTOMAKE],
|
AC_DEFUN([AM_INIT_AUTOMAKE],
|
||||||
[AC_PREREQ([2.62])dnl
|
[AC_PREREQ([2.65])dnl
|
||||||
dnl Autoconf wants to disallow AM_ names. We explicitly allow
|
dnl Autoconf wants to disallow AM_ names. We explicitly allow
|
||||||
dnl the ones we care about.
|
dnl the ones we care about.
|
||||||
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
|
||||||
@ -721,8 +660,7 @@ AC_SUBST([CYGPATH_W])
|
|||||||
dnl Distinguish between old-style and new-style calls.
|
dnl Distinguish between old-style and new-style calls.
|
||||||
m4_ifval([$2],
|
m4_ifval([$2],
|
||||||
[AC_DIAGNOSE([obsolete],
|
[AC_DIAGNOSE([obsolete],
|
||||||
[$0: two- and three-arguments forms are deprecated. For more info, see:
|
[$0: two- and three-arguments forms are deprecated.])
|
||||||
http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
|
|
||||||
m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
|
m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
|
||||||
AC_SUBST([PACKAGE], [$1])dnl
|
AC_SUBST([PACKAGE], [$1])dnl
|
||||||
AC_SUBST([VERSION], [$2])],
|
AC_SUBST([VERSION], [$2])],
|
||||||
@ -776,18 +714,15 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
|
|||||||
[_AM_DEPENDENCIES([OBJC])],
|
[_AM_DEPENDENCIES([OBJC])],
|
||||||
[m4_define([AC_PROG_OBJC],
|
[m4_define([AC_PROG_OBJC],
|
||||||
m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
|
m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
|
||||||
dnl Support for Objective C++ was only introduced in Autoconf 2.65,
|
AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
|
||||||
dnl but we still cater to Autoconf 2.62.
|
|
||||||
m4_ifdef([AC_PROG_OBJCXX],
|
|
||||||
[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
|
|
||||||
[_AM_DEPENDENCIES([OBJCXX])],
|
[_AM_DEPENDENCIES([OBJCXX])],
|
||||||
[m4_define([AC_PROG_OBJCXX],
|
[m4_define([AC_PROG_OBJCXX],
|
||||||
m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl
|
m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
|
||||||
])
|
])
|
||||||
_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
|
AC_REQUIRE([AM_SILENT_RULES])dnl
|
||||||
dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the
|
dnl The testsuite driver may need to know about EXEEXT, so add the
|
||||||
dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro
|
dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This
|
||||||
dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
|
dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
|
||||||
AC_CONFIG_COMMANDS_PRE(dnl
|
AC_CONFIG_COMMANDS_PRE(dnl
|
||||||
[m4_provide_if([_AM_COMPILER_EXEEXT],
|
[m4_provide_if([_AM_COMPILER_EXEEXT],
|
||||||
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
|
[AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
|
||||||
@ -821,14 +756,12 @@ for _am_header in $config_headers :; do
|
|||||||
done
|
done
|
||||||
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
|
||||||
|
|
||||||
# Copyright (C) 2001-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 8
|
|
||||||
|
|
||||||
# AM_PROG_INSTALL_SH
|
# AM_PROG_INSTALL_SH
|
||||||
# ------------------
|
# ------------------
|
||||||
# Define $install_sh.
|
# Define $install_sh.
|
||||||
@ -844,14 +777,12 @@ if test x"${install_sh}" != xset; then
|
|||||||
fi
|
fi
|
||||||
AC_SUBST([install_sh])])
|
AC_SUBST([install_sh])])
|
||||||
|
|
||||||
# Copyright (C) 2003-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2003-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 2
|
|
||||||
|
|
||||||
# Check whether the underlying file-system supports filenames
|
# Check whether the underlying file-system supports filenames
|
||||||
# with a leading dot. For instance MS-DOS doesn't.
|
# with a leading dot. For instance MS-DOS doesn't.
|
||||||
AC_DEFUN([AM_SET_LEADING_DOT],
|
AC_DEFUN([AM_SET_LEADING_DOT],
|
||||||
@ -867,14 +798,12 @@ AC_SUBST([am__leading_dot])])
|
|||||||
|
|
||||||
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
# Check to see how 'make' treats includes. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2001-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 5
|
|
||||||
|
|
||||||
# AM_MAKE_INCLUDE()
|
# AM_MAKE_INCLUDE()
|
||||||
# -----------------
|
# -----------------
|
||||||
# Check to see how make treats includes.
|
# Check to see how make treats includes.
|
||||||
@ -919,14 +848,12 @@ rm -f confinc confmf
|
|||||||
|
|
||||||
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1997-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1997-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 7
|
|
||||||
|
|
||||||
# AM_MISSING_PROG(NAME, PROGRAM)
|
# AM_MISSING_PROG(NAME, PROGRAM)
|
||||||
# ------------------------------
|
# ------------------------------
|
||||||
AC_DEFUN([AM_MISSING_PROG],
|
AC_DEFUN([AM_MISSING_PROG],
|
||||||
@ -934,11 +861,10 @@ AC_DEFUN([AM_MISSING_PROG],
|
|||||||
$1=${$1-"${am_missing_run}$2"}
|
$1=${$1-"${am_missing_run}$2"}
|
||||||
AC_SUBST($1)])
|
AC_SUBST($1)])
|
||||||
|
|
||||||
|
|
||||||
# AM_MISSING_HAS_RUN
|
# AM_MISSING_HAS_RUN
|
||||||
# ------------------
|
# ------------------
|
||||||
# Define MISSING if not defined so far and test if it supports --run.
|
# Define MISSING if not defined so far and test if it is modern enough.
|
||||||
# If it does, set am_missing_run to use it, otherwise, to nothing.
|
# If it is, set am_missing_run to use it, otherwise, to nothing.
|
||||||
AC_DEFUN([AM_MISSING_HAS_RUN],
|
AC_DEFUN([AM_MISSING_HAS_RUN],
|
||||||
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
|
||||||
AC_REQUIRE_AUX_FILE([missing])dnl
|
AC_REQUIRE_AUX_FILE([missing])dnl
|
||||||
@ -951,29 +877,28 @@ if test x"${MISSING+set}" != xset; then
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
# Use eval to expand $SHELL
|
# Use eval to expand $SHELL
|
||||||
if eval "$MISSING --run true"; then
|
if eval "$MISSING --is-lightweight"; then
|
||||||
am_missing_run="$MISSING --run "
|
am_missing_run="$MISSING "
|
||||||
else
|
else
|
||||||
am_missing_run=
|
am_missing_run=
|
||||||
AC_MSG_WARN(['missing' script is too old or missing])
|
AC_MSG_WARN(['missing' script is too old or missing])
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
|
||||||
# Copyright (C) 2003-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2003-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 3
|
|
||||||
|
|
||||||
# AM_PROG_MKDIR_P
|
# AM_PROG_MKDIR_P
|
||||||
# ---------------
|
# ---------------
|
||||||
# Check for 'mkdir -p'.
|
# Check for 'mkdir -p'.
|
||||||
AC_DEFUN([AM_PROG_MKDIR_P],
|
AC_DEFUN([AM_PROG_MKDIR_P],
|
||||||
[AC_PREREQ([2.60])dnl
|
[AC_PREREQ([2.60])dnl
|
||||||
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
AC_REQUIRE([AC_PROG_MKDIR_P])dnl
|
||||||
dnl FIXME to be removed in Automake 1.13.
|
dnl FIXME we are no longer going to remove this! adjust warning
|
||||||
|
dnl FIXME message accordingly.
|
||||||
AC_DIAGNOSE([obsolete],
|
AC_DIAGNOSE([obsolete],
|
||||||
[$0: this macro is deprecated, and will soon be removed.
|
[$0: this macro is deprecated, and will soon be removed.
|
||||||
You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead,
|
You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead,
|
||||||
@ -994,14 +919,12 @@ esac
|
|||||||
|
|
||||||
# Helper functions for option handling. -*- Autoconf -*-
|
# Helper functions for option handling. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2001-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 6
|
|
||||||
|
|
||||||
# _AM_MANGLE_OPTION(NAME)
|
# _AM_MANGLE_OPTION(NAME)
|
||||||
# -----------------------
|
# -----------------------
|
||||||
AC_DEFUN([_AM_MANGLE_OPTION],
|
AC_DEFUN([_AM_MANGLE_OPTION],
|
||||||
@ -1025,13 +948,12 @@ AC_DEFUN([_AM_SET_OPTIONS],
|
|||||||
AC_DEFUN([_AM_IF_OPTION],
|
AC_DEFUN([_AM_IF_OPTION],
|
||||||
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
|
||||||
|
|
||||||
# Copyright (C) 1999-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 9
|
|
||||||
|
|
||||||
# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
@ -1060,7 +982,7 @@ AC_DEFUN([AM_PATH_PYTHON],
|
|||||||
dnl Find a Python interpreter. Python versions prior to 2.0 are not
|
dnl Find a Python interpreter. Python versions prior to 2.0 are not
|
||||||
dnl supported. (2.0 was released on October 16, 2000).
|
dnl supported. (2.0 was released on October 16, 2000).
|
||||||
m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
|
m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
|
||||||
[python python2 python3 python3.2 python3.1 python3.0 python2.7 dnl
|
[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
|
||||||
python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
|
python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])
|
||||||
|
|
||||||
AC_ARG_VAR([PYTHON], [the Python interpreter])
|
AC_ARG_VAR([PYTHON], [the Python interpreter])
|
||||||
@ -1129,6 +1051,25 @@ AC_DEFUN([AM_PATH_PYTHON],
|
|||||||
[am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
|
[am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`])
|
||||||
AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
|
AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform])
|
||||||
|
|
||||||
|
# Just factor out some code duplication.
|
||||||
|
am_python_setup_sysconfig="\
|
||||||
|
import sys
|
||||||
|
# Prefer sysconfig over distutils.sysconfig, for better compatibility
|
||||||
|
# with python 3.x. See automake bug#10227.
|
||||||
|
try:
|
||||||
|
import sysconfig
|
||||||
|
except ImportError:
|
||||||
|
can_use_sysconfig = 0
|
||||||
|
else:
|
||||||
|
can_use_sysconfig = 1
|
||||||
|
# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs:
|
||||||
|
# <https://github.com/pypa/virtualenv/issues/118>
|
||||||
|
try:
|
||||||
|
from platform import python_implementation
|
||||||
|
if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7':
|
||||||
|
can_use_sysconfig = 0
|
||||||
|
except ImportError:
|
||||||
|
pass"
|
||||||
|
|
||||||
dnl Set up 4 directories:
|
dnl Set up 4 directories:
|
||||||
|
|
||||||
@ -1145,7 +1086,14 @@ AC_DEFUN([AM_PATH_PYTHON],
|
|||||||
else
|
else
|
||||||
am_py_prefix=$prefix
|
am_py_prefix=$prefix
|
||||||
fi
|
fi
|
||||||
am_cv_python_pythondir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(0,0,prefix='$am_py_prefix'))" 2>/dev/null`
|
am_cv_python_pythondir=`$PYTHON -c "
|
||||||
|
$am_python_setup_sysconfig
|
||||||
|
if can_use_sysconfig:
|
||||||
|
sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'})
|
||||||
|
else:
|
||||||
|
from distutils import sysconfig
|
||||||
|
sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix')
|
||||||
|
sys.stdout.write(sitedir)"`
|
||||||
case $am_cv_python_pythondir in
|
case $am_cv_python_pythondir in
|
||||||
$am_py_prefix*)
|
$am_py_prefix*)
|
||||||
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
|
am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'`
|
||||||
@ -1180,7 +1128,14 @@ AC_DEFUN([AM_PATH_PYTHON],
|
|||||||
else
|
else
|
||||||
am_py_exec_prefix=$exec_prefix
|
am_py_exec_prefix=$exec_prefix
|
||||||
fi
|
fi
|
||||||
am_cv_python_pyexecdir=`$PYTHON -c "import sys; from distutils import sysconfig; sys.stdout.write(sysconfig.get_python_lib(1,0,prefix='$am_py_exec_prefix'))" 2>/dev/null`
|
am_cv_python_pyexecdir=`$PYTHON -c "
|
||||||
|
$am_python_setup_sysconfig
|
||||||
|
if can_use_sysconfig:
|
||||||
|
sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'})
|
||||||
|
else:
|
||||||
|
from distutils import sysconfig
|
||||||
|
sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix')
|
||||||
|
sys.stdout.write(sitedir)"`
|
||||||
case $am_cv_python_pyexecdir in
|
case $am_cv_python_pyexecdir in
|
||||||
$am_py_exec_prefix*)
|
$am_py_exec_prefix*)
|
||||||
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
|
am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'`
|
||||||
@ -1228,14 +1183,12 @@ for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]]
|
|||||||
sys.exit(sys.hexversion < minverhex)"
|
sys.exit(sys.hexversion < minverhex)"
|
||||||
AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
|
AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])])
|
||||||
|
|
||||||
# Copyright (C) 2001-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 1
|
|
||||||
|
|
||||||
# AM_RUN_LOG(COMMAND)
|
# AM_RUN_LOG(COMMAND)
|
||||||
# -------------------
|
# -------------------
|
||||||
# Run COMMAND, save the exit status in ac_status, and log it.
|
# Run COMMAND, save the exit status in ac_status, and log it.
|
||||||
@ -1249,14 +1202,12 @@ AC_DEFUN([AM_RUN_LOG],
|
|||||||
|
|
||||||
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
# Check to make sure that the build environment is sane. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 1996-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1996-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 9
|
|
||||||
|
|
||||||
# AM_SANITY_CHECK
|
# AM_SANITY_CHECK
|
||||||
# ---------------
|
# ---------------
|
||||||
AC_DEFUN([AM_SANITY_CHECK],
|
AC_DEFUN([AM_SANITY_CHECK],
|
||||||
@ -1332,14 +1283,12 @@ AC_CONFIG_COMMANDS_PRE(
|
|||||||
rm -f conftest.file
|
rm -f conftest.file
|
||||||
])
|
])
|
||||||
|
|
||||||
# Copyright (C) 2009-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2009-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 3
|
|
||||||
|
|
||||||
# AM_SILENT_RULES([DEFAULT])
|
# AM_SILENT_RULES([DEFAULT])
|
||||||
# --------------------------
|
# --------------------------
|
||||||
# Enable less verbose build rules; with the default set to DEFAULT
|
# Enable less verbose build rules; with the default set to DEFAULT
|
||||||
@ -1394,14 +1343,12 @@ AC_SUBST([AM_BACKSLASH])dnl
|
|||||||
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
|
_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
|
||||||
])
|
])
|
||||||
|
|
||||||
# Copyright (C) 2001-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2001-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 2
|
|
||||||
|
|
||||||
# AM_PROG_INSTALL_STRIP
|
# AM_PROG_INSTALL_STRIP
|
||||||
# ---------------------
|
# ---------------------
|
||||||
# One issue with vendor 'install' (even GNU) is that you can't
|
# One issue with vendor 'install' (even GNU) is that you can't
|
||||||
@ -1424,14 +1371,12 @@ fi
|
|||||||
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
|
||||||
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
AC_SUBST([INSTALL_STRIP_PROGRAM])])
|
||||||
|
|
||||||
# Copyright (C) 2006-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2006-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 3
|
|
||||||
|
|
||||||
# _AM_SUBST_NOTMAKE(VARIABLE)
|
# _AM_SUBST_NOTMAKE(VARIABLE)
|
||||||
# ---------------------------
|
# ---------------------------
|
||||||
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
|
# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
|
||||||
@ -1445,14 +1390,12 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
|||||||
|
|
||||||
# Check how to create a tarball. -*- Autoconf -*-
|
# Check how to create a tarball. -*- Autoconf -*-
|
||||||
|
|
||||||
# Copyright (C) 2004-2012 Free Software Foundation, Inc.
|
# Copyright (C) 2004-2013 Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This file is free software; the Free Software Foundation
|
# This file is free software; the Free Software Foundation
|
||||||
# gives unlimited permission to copy and/or distribute it,
|
# gives unlimited permission to copy and/or distribute it,
|
||||||
# with or without modifications, as long as this notice is preserved.
|
# with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
# serial 3
|
|
||||||
|
|
||||||
# _AM_PROG_TAR(FORMAT)
|
# _AM_PROG_TAR(FORMAT)
|
||||||
# --------------------
|
# --------------------
|
||||||
# Check how to create a tarball in format FORMAT.
|
# Check how to create a tarball in format FORMAT.
|
||||||
@ -1466,82 +1409,121 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
|
|||||||
# Substitute a variable $(am__untar) that extract such
|
# Substitute a variable $(am__untar) that extract such
|
||||||
# a tarball read from stdin.
|
# a tarball read from stdin.
|
||||||
# $(am__untar) < result.tar
|
# $(am__untar) < result.tar
|
||||||
|
#
|
||||||
AC_DEFUN([_AM_PROG_TAR],
|
AC_DEFUN([_AM_PROG_TAR],
|
||||||
[# Always define AMTAR for backward compatibility. Yes, it's still used
|
[# Always define AMTAR for backward compatibility. Yes, it's still used
|
||||||
# in the wild :-( We should find a proper way to deprecate it ...
|
# in the wild :-( We should find a proper way to deprecate it ...
|
||||||
AC_SUBST([AMTAR], ['$${TAR-tar}'])
|
AC_SUBST([AMTAR], ['$${TAR-tar}'])
|
||||||
m4_if([$1], [v7],
|
|
||||||
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
|
# We'll loop over all known methods to create a tar archive until one works.
|
||||||
[m4_case([$1], [ustar],, [pax],,
|
|
||||||
[m4_fatal([Unknown tar format])])
|
|
||||||
AC_MSG_CHECKING([how to create a $1 tar archive])
|
|
||||||
# Loop over all known methods to create a tar archive until one works.
|
|
||||||
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
|
_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
|
||||||
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
|
|
||||||
# Do not fold the above two line into one, because Tru64 sh and
|
|
||||||
# Solaris sh will not grok spaces in the rhs of '-'.
|
|
||||||
for _am_tool in $_am_tools
|
|
||||||
do
|
|
||||||
case $_am_tool in
|
|
||||||
gnutar)
|
|
||||||
for _am_tar in tar gnutar gtar;
|
|
||||||
do
|
|
||||||
AM_RUN_LOG([$_am_tar --version]) && break
|
|
||||||
done
|
|
||||||
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
|
|
||||||
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
|
|
||||||
am__untar="$_am_tar -xf -"
|
|
||||||
;;
|
|
||||||
plaintar)
|
|
||||||
# Must skip GNU tar: if it does not support --format= it doesn't create
|
|
||||||
# ustar tarball either.
|
|
||||||
(tar --version) >/dev/null 2>&1 && continue
|
|
||||||
am__tar='tar chf - "$$tardir"'
|
|
||||||
am__tar_='tar chf - "$tardir"'
|
|
||||||
am__untar='tar xf -'
|
|
||||||
;;
|
|
||||||
pax)
|
|
||||||
am__tar='pax -L -x $1 -w "$$tardir"'
|
|
||||||
am__tar_='pax -L -x $1 -w "$tardir"'
|
|
||||||
am__untar='pax -r'
|
|
||||||
;;
|
|
||||||
cpio)
|
|
||||||
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
|
|
||||||
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
|
|
||||||
am__untar='cpio -i -H $1 -d'
|
|
||||||
;;
|
|
||||||
none)
|
|
||||||
am__tar=false
|
|
||||||
am__tar_=false
|
|
||||||
am__untar=false
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
# If the value was cached, stop now. We just wanted to have am__tar
|
m4_if([$1], [v7],
|
||||||
# and am__untar set.
|
[am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'],
|
||||||
test -n "${am_cv_prog_tar_$1}" && break
|
|
||||||
|
|
||||||
# tar/untar a dummy directory, and stop if the command works
|
[m4_case([$1],
|
||||||
|
[ustar],
|
||||||
|
[# The POSIX 1988 'ustar' format is defined with fixed-size fields.
|
||||||
|
# There is notably a 21 bits limit for the UID and the GID. In fact,
|
||||||
|
# the 'pax' utility can hang on bigger UID/GID (see automake bug#8343
|
||||||
|
# and bug#13588).
|
||||||
|
am_max_uid=2097151 # 2^21 - 1
|
||||||
|
am_max_gid=$am_max_uid
|
||||||
|
# The $UID and $GID variables are not portable, so we need to resort
|
||||||
|
# to the POSIX-mandated id(1) utility. Errors in the 'id' calls
|
||||||
|
# below are definitely unexpected, so allow the users to see them
|
||||||
|
# (that is, avoid stderr redirection).
|
||||||
|
am_uid=`id -u || echo unknown`
|
||||||
|
am_gid=`id -g || echo unknown`
|
||||||
|
AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format])
|
||||||
|
if test $am_uid -le $am_max_uid; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
_am_tools=none
|
||||||
|
fi
|
||||||
|
AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format])
|
||||||
|
if test $am_gid -le $am_max_gid; then
|
||||||
|
AC_MSG_RESULT([yes])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([no])
|
||||||
|
_am_tools=none
|
||||||
|
fi],
|
||||||
|
|
||||||
|
[pax],
|
||||||
|
[],
|
||||||
|
|
||||||
|
[m4_fatal([Unknown tar format])])
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([how to create a $1 tar archive])
|
||||||
|
|
||||||
|
# Go ahead even if we have the value already cached. We do so because we
|
||||||
|
# need to set the values for the 'am__tar' and 'am__untar' variables.
|
||||||
|
_am_tools=${am_cv_prog_tar_$1-$_am_tools}
|
||||||
|
|
||||||
|
for _am_tool in $_am_tools; do
|
||||||
|
case $_am_tool in
|
||||||
|
gnutar)
|
||||||
|
for _am_tar in tar gnutar gtar; do
|
||||||
|
AM_RUN_LOG([$_am_tar --version]) && break
|
||||||
|
done
|
||||||
|
am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
|
||||||
|
am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
|
||||||
|
am__untar="$_am_tar -xf -"
|
||||||
|
;;
|
||||||
|
plaintar)
|
||||||
|
# Must skip GNU tar: if it does not support --format= it doesn't create
|
||||||
|
# ustar tarball either.
|
||||||
|
(tar --version) >/dev/null 2>&1 && continue
|
||||||
|
am__tar='tar chf - "$$tardir"'
|
||||||
|
am__tar_='tar chf - "$tardir"'
|
||||||
|
am__untar='tar xf -'
|
||||||
|
;;
|
||||||
|
pax)
|
||||||
|
am__tar='pax -L -x $1 -w "$$tardir"'
|
||||||
|
am__tar_='pax -L -x $1 -w "$tardir"'
|
||||||
|
am__untar='pax -r'
|
||||||
|
;;
|
||||||
|
cpio)
|
||||||
|
am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
|
||||||
|
am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
|
||||||
|
am__untar='cpio -i -H $1 -d'
|
||||||
|
;;
|
||||||
|
none)
|
||||||
|
am__tar=false
|
||||||
|
am__tar_=false
|
||||||
|
am__untar=false
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# If the value was cached, stop now. We just wanted to have am__tar
|
||||||
|
# and am__untar set.
|
||||||
|
test -n "${am_cv_prog_tar_$1}" && break
|
||||||
|
|
||||||
|
# tar/untar a dummy directory, and stop if the command works.
|
||||||
|
rm -rf conftest.dir
|
||||||
|
mkdir conftest.dir
|
||||||
|
echo GrepMe > conftest.dir/file
|
||||||
|
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
|
||||||
|
rm -rf conftest.dir
|
||||||
|
if test -s conftest.tar; then
|
||||||
|
AM_RUN_LOG([$am__untar <conftest.tar])
|
||||||
|
AM_RUN_LOG([cat conftest.dir/file])
|
||||||
|
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
|
||||||
|
fi
|
||||||
|
done
|
||||||
rm -rf conftest.dir
|
rm -rf conftest.dir
|
||||||
mkdir conftest.dir
|
|
||||||
echo GrepMe > conftest.dir/file
|
|
||||||
AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
|
|
||||||
rm -rf conftest.dir
|
|
||||||
if test -s conftest.tar; then
|
|
||||||
AM_RUN_LOG([$am__untar <conftest.tar])
|
|
||||||
grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
rm -rf conftest.dir
|
|
||||||
|
|
||||||
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
|
AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
|
||||||
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
|
AC_MSG_RESULT([$am_cv_prog_tar_$1])])
|
||||||
|
|
||||||
AC_SUBST([am__tar])
|
AC_SUBST([am__tar])
|
||||||
AC_SUBST([am__untar])
|
AC_SUBST([am__untar])
|
||||||
]) # _AM_PROG_TAR
|
]) # _AM_PROG_TAR
|
||||||
|
|
||||||
m4_include([m4/gettext.m4])
|
m4_include([m4/gettext.m4])
|
||||||
m4_include([m4/iconv.m4])
|
m4_include([m4/iconv.m4])
|
||||||
|
m4_include([m4/intlmacosx.m4])
|
||||||
m4_include([m4/lib-ld.m4])
|
m4_include([m4/lib-ld.m4])
|
||||||
m4_include([m4/lib-link.m4])
|
m4_include([m4/lib-link.m4])
|
||||||
m4_include([m4/lib-prefix.m4])
|
m4_include([m4/lib-prefix.m4])
|
||||||
@ -1553,4 +1535,3 @@ m4_include([m4/lt~obsolete.m4])
|
|||||||
m4_include([m4/nls.m4])
|
m4_include([m4/nls.m4])
|
||||||
m4_include([m4/po.m4])
|
m4_include([m4/po.m4])
|
||||||
m4_include([m4/progtest.m4])
|
m4_include([m4/progtest.m4])
|
||||||
m4_include([m4/python.m4])
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# anaconda: The Red Hat Linux Installation program
|
# anaconda: The Red Hat Linux Installation program
|
||||||
#
|
#
|
||||||
# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
# Copyright (C) 1999-2013
|
||||||
# Red Hat, Inc. All rights reserved.
|
# Red Hat, Inc. All rights reserved.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
@ -28,17 +28,16 @@
|
|||||||
# Matt Wilson <msw@rpath.com>
|
# Matt Wilson <msw@rpath.com>
|
||||||
#
|
#
|
||||||
|
|
||||||
# This toplevel file is a little messy at the moment...
|
# This toplevel file is a little messy at the moment... (2001-06-22)
|
||||||
|
# ...still messy (2013-07-12)
|
||||||
import atexit, sys, os, re, time, subprocess
|
|
||||||
from tempfile import mkstemp
|
|
||||||
|
|
||||||
|
import atexit, sys, os, time, subprocess
|
||||||
# keep up with process ID of the window manager if we start it
|
# keep up with process ID of the window manager if we start it
|
||||||
wm_pid = None
|
wm_pid = None
|
||||||
|
|
||||||
def exitHandler(rebootData, storage, exitCode=None):
|
def exitHandler(rebootData, storage, exitCode=None):
|
||||||
from pyanaconda import isys
|
if flags.usevnc:
|
||||||
from pyanaconda.flags import flags
|
vnc.shutdownServer()
|
||||||
|
|
||||||
if exitCode:
|
if exitCode:
|
||||||
anaconda.intf.shutdown()
|
anaconda.intf.shutdown()
|
||||||
@ -50,32 +49,41 @@ def exitHandler(rebootData, storage, exitCode=None):
|
|||||||
while True:
|
while True:
|
||||||
time.sleep(10000)
|
time.sleep(10000)
|
||||||
|
|
||||||
if image_count:
|
if image_count or flags.dirInstall:
|
||||||
anaconda.storage.umountFilesystems(ignoreErrors=True, swapoff=False)
|
anaconda.storage.umountFilesystems(ignoreErrors=True, swapoff=False)
|
||||||
devicetree = anaconda.storage.devicetree
|
devicetree = anaconda.storage.devicetree
|
||||||
devicetree.teardownAll()
|
devicetree.teardownAll()
|
||||||
for name in devicetree.diskImages:
|
for name in devicetree.diskImages:
|
||||||
device = devicetree.getDeviceByName(name)
|
dev = devicetree.getDeviceByName(name)
|
||||||
for loop in device.parents:
|
for loop in dev.parents:
|
||||||
loop.controllable = True
|
loop.controllable = True
|
||||||
device.deactivate(recursive=True)
|
dev.deactivate(recursive=True)
|
||||||
|
|
||||||
if not flags.imageInstall and not flags.livecdInstall:
|
if not flags.imageInstall and not flags.livecdInstall \
|
||||||
from pykickstart.constants import KS_SHUTDOWN, KS_WAIT, KS_REBOOT
|
and not flags.dirInstall:
|
||||||
|
from pykickstart.constants import KS_SHUTDOWN, KS_WAIT
|
||||||
from pyanaconda.iutil import dracut_eject
|
from pyanaconda.iutil import dracut_eject
|
||||||
|
|
||||||
if rebootData.eject:
|
if flags.eject or rebootData.eject:
|
||||||
for drive in storage.devicetree.devices:
|
for drive in storage.devicetree.devices:
|
||||||
if drive.type != "cdrom":
|
if drive.type != "cdrom":
|
||||||
continue
|
continue
|
||||||
dracut_eject(drive.path)
|
dracut_eject(drive.path)
|
||||||
|
|
||||||
if rebootData.action == KS_SHUTDOWN:
|
if rebootData.action == KS_SHUTDOWN:
|
||||||
os.system("systemctl --no-wall poweroff")
|
subprocess.Popen(["systemctl", "--no-wall", "poweroff"])
|
||||||
elif rebootData.action == KS_WAIT:
|
elif rebootData.action == KS_WAIT:
|
||||||
os.system("systemctl --no-wall halt")
|
subprocess.Popen(["systemctl", "--no-wall", "halt"])
|
||||||
else: # reboot action is KS_REBOOT or None
|
else: # reboot action is KS_REBOOT or None
|
||||||
os.system("systemctl --no-wall reboot")
|
subprocess.Popen(["systemctl", "--no-wall", "reboot"])
|
||||||
|
|
||||||
|
def startSpiceVDAgent():
|
||||||
|
status = iutil.execWithRedirect("spice-vdagent", [])
|
||||||
|
|
||||||
|
if status:
|
||||||
|
log.info("spice-vdagent exited with status %d", status)
|
||||||
|
else:
|
||||||
|
log.info("Started spice-vdagent.")
|
||||||
|
|
||||||
def startMetacityWM():
|
def startMetacityWM():
|
||||||
childpid = os.fork()
|
childpid = os.fork()
|
||||||
@ -83,17 +91,14 @@ def startMetacityWM():
|
|||||||
# after this point the method should never return (or throw an exception
|
# after this point the method should never return (or throw an exception
|
||||||
# outside)
|
# outside)
|
||||||
try:
|
try:
|
||||||
args = ['--display', ':1',
|
iutil.execWithRedirect('metacity', ["--display", ":1", "--sm-disable"])
|
||||||
'--sm-disable']
|
|
||||||
iutil.execWithRedirect('metacity', args,
|
|
||||||
stdout='/dev/null', stderr='/dev/null')
|
|
||||||
except BaseException as e:
|
except BaseException as e:
|
||||||
# catch all possible exceptions
|
# catch all possible exceptions
|
||||||
log.error("Problems running the window manager: %s" % str(e))
|
log.error("Problems running the window manager: %s", e)
|
||||||
sys.exit(1)
|
os._exit(1)
|
||||||
|
|
||||||
log.info("The window manager has terminated.")
|
log.info("The window manager has terminated.")
|
||||||
sys.exit(0)
|
os._exit(0)
|
||||||
return childpid
|
return childpid
|
||||||
|
|
||||||
def startAuditDaemon():
|
def startAuditDaemon():
|
||||||
@ -103,8 +108,8 @@ def startAuditDaemon():
|
|||||||
try:
|
try:
|
||||||
os.execl(cmd, cmd)
|
os.execl(cmd, cmd)
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
log.error("Error running the audit daemon: %s" % str(e))
|
log.error("Error running the audit daemon: %s", e)
|
||||||
sys.exit(0)
|
os._exit(0)
|
||||||
# auditd will turn into a daemon so catch the immediate child pid now:
|
# auditd will turn into a daemon so catch the immediate child pid now:
|
||||||
os.waitpid(childpid, 0)
|
os.waitpid(childpid, 0)
|
||||||
|
|
||||||
@ -116,7 +121,7 @@ def doStartupX11Actions():
|
|||||||
|
|
||||||
# now start up the window manager
|
# now start up the window manager
|
||||||
wm_pid = startMetacityWM()
|
wm_pid = startMetacityWM()
|
||||||
log.info("Starting window manager, pid %s." % (wm_pid,))
|
log.info("Starting window manager, pid %s.", wm_pid)
|
||||||
|
|
||||||
def set_x_resolution(runres):
|
def set_x_resolution(runres):
|
||||||
# cant do this if no window manager is running because otherwise when we
|
# cant do this if no window manager is running because otherwise when we
|
||||||
@ -125,17 +130,25 @@ def set_x_resolution(runres):
|
|||||||
if runres and opts.display_mode == 'g' and not flags.usevnc and wm_pid :
|
if runres and opts.display_mode == 'g' and not flags.usevnc and wm_pid :
|
||||||
try:
|
try:
|
||||||
log.info("Setting the screen resolution to: %s.", runres)
|
log.info("Setting the screen resolution to: %s.", runres)
|
||||||
iutil.execWithRedirect("xrandr",
|
iutil.execWithRedirect("xrandr",
|
||||||
["-d", ":1", "-s", runres],
|
["-d", ":1", "-s", runres])
|
||||||
stdout="/dev/tty5", stderr="/dev/tty5")
|
except RuntimeError:
|
||||||
except RuntimeError as e:
|
|
||||||
log.error("The X resolution not set")
|
log.error("The X resolution not set")
|
||||||
iutil.execWithRedirect("xrandr",
|
iutil.execWithRedirect("xrandr",
|
||||||
["-d", ":1", "-q"],
|
["-d", ":1", "-q"])
|
||||||
stdout="/dev/tty5", stderr="/dev/tty5")
|
|
||||||
|
def doExtraX11Actions(runres):
|
||||||
|
"""Perform X11 actions not related to startup"""
|
||||||
|
|
||||||
|
set_x_resolution(runres)
|
||||||
|
|
||||||
|
startSpiceVDAgent()
|
||||||
|
|
||||||
|
keyboard.background_XklWrapper_initialize()
|
||||||
|
|
||||||
def setupPythonUpdates():
|
def setupPythonUpdates():
|
||||||
from distutils.sysconfig import get_python_lib
|
from distutils.sysconfig import get_python_lib
|
||||||
|
import gi.overrides
|
||||||
|
|
||||||
# Temporary hack for F18 alpha to symlink updates and product directories
|
# Temporary hack for F18 alpha to symlink updates and product directories
|
||||||
# into tmpfs. To be removed after beta in order to directly use content
|
# into tmpfs. To be removed after beta in order to directly use content
|
||||||
@ -169,13 +182,15 @@ def setupPythonUpdates():
|
|||||||
# the updates directory.
|
# the updates directory.
|
||||||
symlink_updates(dest, d)
|
symlink_updates(dest, d)
|
||||||
|
|
||||||
|
gi.overrides.__path__.insert(0, "/run/install/updates")
|
||||||
|
|
||||||
import glob
|
import glob
|
||||||
import shutil
|
import shutil
|
||||||
for rule in glob.glob("/tmp/updates/*.rules"):
|
for rule in glob.glob("/tmp/updates/*.rules"):
|
||||||
target = "/etc/udev/rules.d/" + rule.split('/')[-1]
|
target = "/etc/udev/rules.d/" + rule.split('/')[-1]
|
||||||
shutil.copyfile(rule, target)
|
shutil.copyfile(rule, target)
|
||||||
|
|
||||||
def symlink_updates(dest_dir, update_dir):
|
def symlink_updates(dest_dir, update_dir):
|
||||||
contents = os.listdir(update_dir)
|
contents = os.listdir(update_dir)
|
||||||
|
|
||||||
for f in os.listdir(dest_dir):
|
for f in os.listdir(dest_dir):
|
||||||
@ -234,6 +249,7 @@ def parseOptions(argv=None, cmdline=None):
|
|||||||
op.add_option("--multilib", dest="multiLib", action="store_true", default=False)
|
op.add_option("--multilib", dest="multiLib", action="store_true", default=False)
|
||||||
|
|
||||||
op.add_option("-m", "--method", dest="method", default=None)
|
op.add_option("-m", "--method", dest="method", default=None)
|
||||||
|
op.add_option("--askmethod", dest="askmethod", action="store_true", default=False)
|
||||||
op.add_option("--repo", dest="method", default=None)
|
op.add_option("--repo", dest="method", default=None)
|
||||||
op.add_option("--stage2", dest="stage2", default=None)
|
op.add_option("--stage2", dest="stage2", default=None)
|
||||||
op.add_option("--noverifyssl", action="store_true", default=False)
|
op.add_option("--noverifyssl", action="store_true", default=False)
|
||||||
@ -244,9 +260,7 @@ def parseOptions(argv=None, cmdline=None):
|
|||||||
op.add_option("--headless", dest="isHeadless", action="store_true", default=False)
|
op.add_option("--headless", dest="isHeadless", action="store_true", default=False)
|
||||||
op.add_option("--nofb")
|
op.add_option("--nofb")
|
||||||
op.add_option("--resolution", dest="runres", default=None)
|
op.add_option("--resolution", dest="runres", default=None)
|
||||||
op.add_option("--serial", action="store_true", default=False)
|
|
||||||
op.add_option("--usefbx", dest="xdriver", action="store_const", const="fbdev")
|
op.add_option("--usefbx", dest="xdriver", action="store_const", const="fbdev")
|
||||||
op.add_option("--virtpconsole")
|
|
||||||
op.add_option("--vnc", action="store_true", default=False)
|
op.add_option("--vnc", action="store_true", default=False)
|
||||||
op.add_option("--vncconnect")
|
op.add_option("--vncconnect")
|
||||||
op.add_option("--vncpassword", default="")
|
op.add_option("--vncpassword", default="")
|
||||||
@ -275,28 +289,38 @@ def parseOptions(argv=None, cmdline=None):
|
|||||||
op.add_option("--noiscsi", dest="iscsi", action="store_false", default=False)
|
op.add_option("--noiscsi", dest="iscsi", action="store_false", default=False)
|
||||||
op.add_option("--iscsi", action="store_true")
|
op.add_option("--iscsi", action="store_true")
|
||||||
|
|
||||||
|
# Geolocation
|
||||||
|
op.add_option("--geoloc")
|
||||||
|
|
||||||
# Miscellaneous
|
# Miscellaneous
|
||||||
op.add_option("--module", action="append", default=[])
|
op.add_option("--module", action="append", default=[])
|
||||||
op.add_option("--nomount", dest="rescue_nomount", action="store_true", default=False)
|
op.add_option("--nomount", dest="rescue_nomount", action="store_true", default=False)
|
||||||
op.add_option("--updates", dest="updateSrc", action="store", type="string")
|
op.add_option("--updates", dest="updateSrc", action="store", type="string")
|
||||||
op.add_option("--dlabel", action="store_true", default=False)
|
op.add_option("--dlabel", action="store_true", default=False)
|
||||||
op.add_option("--image", action="append", dest="images", default=[])
|
op.add_option("--image", action="append", dest="images", default=[])
|
||||||
|
op.add_option("--dirinstall", action="store_true", default=False)
|
||||||
op.add_option("--memcheck", action="store_true", default=True)
|
op.add_option("--memcheck", action="store_true", default=True)
|
||||||
op.add_option("--nomemcheck", action="store_false", dest="memcheck")
|
op.add_option("--nomemcheck", action="store_false", dest="memcheck")
|
||||||
op.add_option("--leavebootorder", action="store_true", default=False)
|
op.add_option("--leavebootorder", action="store_true", default=False)
|
||||||
|
op.add_option("--noeject", action="store_false", dest="eject", default=True)
|
||||||
|
op.add_option("--extlinux", action="store_true", default=False)
|
||||||
|
op.add_option("--dnf", action="store_true", default=False)
|
||||||
|
|
||||||
# some defaults change based on cmdline flags
|
# some defaults change based on cmdline flags
|
||||||
if cmdline is not None:
|
if cmdline is not None:
|
||||||
if "console" in cmdline:
|
if "console" in cmdline:
|
||||||
op.set_defaults(display_mode="t")
|
op.set_defaults(display_mode="t")
|
||||||
|
|
||||||
(opts, args) = op.parse_args(argv, cmdline=cmdline)
|
(options, extraArgs) = op.parse_args(argv, cmdline=cmdline)
|
||||||
return (opts, args, op.deprecated_bootargs)
|
return (options, extraArgs, op.deprecated_bootargs)
|
||||||
|
|
||||||
def setupPythonPath():
|
def setupPythonPath():
|
||||||
# First add our updates path
|
# First add our updates path
|
||||||
sys.path.insert(0, '/tmp/updates/')
|
sys.path.insert(0, '/tmp/updates/')
|
||||||
sys.path.append('/usr/share/system-config-date')
|
|
||||||
|
from pyanaconda.constants import ADDON_PATHS
|
||||||
|
# append ADDON_PATHS dirs at the end
|
||||||
|
sys.path.extend(ADDON_PATHS)
|
||||||
|
|
||||||
def setupEnvironment():
|
def setupEnvironment():
|
||||||
# Silly GNOME stuff
|
# Silly GNOME stuff
|
||||||
@ -317,34 +341,38 @@ def setupEnvironment():
|
|||||||
if os.environ.has_key("LD_PRELOAD"):
|
if os.environ.has_key("LD_PRELOAD"):
|
||||||
del os.environ["LD_PRELOAD"]
|
del os.environ["LD_PRELOAD"]
|
||||||
|
|
||||||
os.environ["GLADEPATH"] = "/tmp/updates/:/tmp/updates/data/ui/:ui/:/usr/share/anaconda/ui/:/usr/share/python-meh/"
|
def setupLoggingFromOpts(options):
|
||||||
os.environ["PIXMAPPATH"] = "/tmp/updates/pixmaps/:/tmp/updates/:/tmp/product/pixmaps/:/tmp/product/:pixmaps/:/usr/share/anaconda/pixmaps/:/usr/share/pixmaps/:/usr/share/anaconda/:/usr/share/python-meh/:/usr/share/icons/Fedora/48x48/apps/"
|
if options.debug:
|
||||||
|
# debugging means debug logging
|
||||||
|
options.loglevel = "debug"
|
||||||
|
|
||||||
def setupLoggingFromOpts(opts):
|
if options.loglevel and anaconda_log.logLevelMap.has_key(options.loglevel):
|
||||||
if opts.loglevel and anaconda_log.logLevelMap.has_key(opts.loglevel):
|
|
||||||
level = anaconda_log.logLevelMap[opts.loglevel]
|
level = anaconda_log.logLevelMap[opts.loglevel]
|
||||||
anaconda_log.logger.tty_loglevel = level
|
anaconda_log.logger.tty_loglevel = level
|
||||||
anaconda_log.setHandlersLevel(log, level)
|
anaconda_log.setHandlersLevel(log, level)
|
||||||
|
packaging_log = logging.getLogger("packaging")
|
||||||
|
anaconda_log.setHandlersLevel(packaging_log, level)
|
||||||
storage_log = logging.getLogger("storage")
|
storage_log = logging.getLogger("storage")
|
||||||
anaconda_log.setHandlersLevel(storage_log, level)
|
anaconda_log.setHandlersLevel(storage_log, level)
|
||||||
|
|
||||||
if opts.syslog:
|
if options.syslog:
|
||||||
anaconda_log.logger.remote_syslog = opts.syslog
|
anaconda_log.logger.updateRemote(options.syslog)
|
||||||
|
|
||||||
def gtk_warning(title, reason):
|
def gtk_warning(title, reason):
|
||||||
import gtk
|
from gi.repository import Gtk
|
||||||
dialog = gtk.MessageDialog(type = gtk.MESSAGE_ERROR,
|
dialog = Gtk.MessageDialog(type = Gtk.MessageType.ERROR,
|
||||||
buttons = gtk.BUTTONS_CLOSE,
|
buttons = Gtk.ButtonsType.CLOSE,
|
||||||
message_format=reason)
|
message_format=reason)
|
||||||
dialog.set_title(title)
|
dialog.set_title(title)
|
||||||
dialog.run()
|
dialog.run()
|
||||||
dialog.destroy()
|
dialog.destroy()
|
||||||
|
|
||||||
def check_memory(anaconda, opts, display_mode=None):
|
# pylint: disable-msg=W0621
|
||||||
reason_strict = _("%s requires %s MB of memory to install, but you only have "
|
def check_memory(anaconda, options, display_mode=None):
|
||||||
"%s MB on this machine.\n")
|
reason_strict = _("%(product_name)s requires %(needed_ram)s MB of memory to "
|
||||||
reason_graphical = _("The %s graphical installer requires %s MB of memory, but "
|
"install, but you only have %(total_ram)s MB on this machine.\n")
|
||||||
"you only have %s MB.")
|
reason_graphical = _("The %(product_name)s graphical installer requires %(needed_ram)s "
|
||||||
|
"MB of memory, but you only have %(total_ram)s MB.")
|
||||||
|
|
||||||
reboot_extra = _('\n'
|
reboot_extra = _('\n'
|
||||||
'Press <return> to reboot your system.\n')
|
'Press <return> to reboot your system.\n')
|
||||||
@ -354,6 +382,9 @@ def check_memory(anaconda, opts, display_mode=None):
|
|||||||
"terminal.")
|
"terminal.")
|
||||||
nolivecd_extra = _(" Starting text mode.")
|
nolivecd_extra = _(" Starting text mode.")
|
||||||
|
|
||||||
|
if options.rescue:
|
||||||
|
return
|
||||||
|
|
||||||
if not display_mode:
|
if not display_mode:
|
||||||
display_mode = anaconda.displayMode
|
display_mode = anaconda.displayMode
|
||||||
|
|
||||||
@ -362,82 +393,83 @@ def check_memory(anaconda, opts, display_mode=None):
|
|||||||
needed_ram = int(isys.MIN_RAM / 1024)
|
needed_ram = int(isys.MIN_RAM / 1024)
|
||||||
graphical_ram = needed_ram + int(isys.GUI_INSTALL_EXTRA_RAM / 1024)
|
graphical_ram = needed_ram + int(isys.GUI_INSTALL_EXTRA_RAM / 1024)
|
||||||
|
|
||||||
log.info("check_memory(): total:%s, needed:%s, graphical:%s" % \
|
log.info("check_memory(): total:%s, needed:%s, graphical:%s",
|
||||||
(total_ram, needed_ram, graphical_ram))
|
total_ram, needed_ram, graphical_ram)
|
||||||
|
|
||||||
if not opts.memcheck:
|
if not options.memcheck:
|
||||||
log.warning("CHECK_MEMORY DISABLED")
|
log.warning("CHECK_MEMORY DISABLED")
|
||||||
return
|
return
|
||||||
|
|
||||||
|
reason_args = {"product_name" : product.productName,
|
||||||
|
"needed_ram" : needed_ram,
|
||||||
|
"total_ram" : total_ram }
|
||||||
if needed_ram > total_ram:
|
if needed_ram > total_ram:
|
||||||
from snack import SnackScreen, ButtonChoiceWindow
|
from snack import SnackScreen, ButtonChoiceWindow
|
||||||
if opts.liveinst:
|
if options.liveinst:
|
||||||
stdoutLog.warning(reason % (product.productName, needed_ram, total_ram))
|
stdoutLog.warning(reason, **reason_args)
|
||||||
gtk_warning(livecd_title, reason % (product.productName, needed_ram, total_ram))
|
gtk_warning(livecd_title, reason % reason_args)
|
||||||
else:
|
else:
|
||||||
reason += reboot_extra
|
reason += reboot_extra
|
||||||
screen = SnackScreen()
|
screen = SnackScreen()
|
||||||
ButtonChoiceWindow(screen, _('Fatal Error'),
|
ButtonChoiceWindow(screen, _('Fatal Error'),
|
||||||
reason % (product.productName, needed_ram, total_ram),
|
reason % reason_args,
|
||||||
buttons = (_("OK"),))
|
buttons = (_("OK"),))
|
||||||
screen.finish()
|
screen.finish()
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# override display mode if machine cannot nicely run X
|
# override display mode if machine cannot nicely run X
|
||||||
if display_mode not in ('t', 'c', 's') and not flags.usevnc:
|
if display_mode not in ('t', 'c', 's') and not flags.usevnc:
|
||||||
needed_ram = graphical_ram
|
reason_args["needed_ram"] = graphical_ram
|
||||||
reason = reason_graphical
|
reason = reason_graphical
|
||||||
|
|
||||||
if needed_ram > total_ram:
|
if needed_ram > total_ram:
|
||||||
if opts.liveinst:
|
if options.liveinst:
|
||||||
reason += livecd_extra
|
reason += livecd_extra
|
||||||
stdoutLog.warning(reason % (product.productName, needed_ram, total_ram))
|
stdoutLog.warning(reason, **reason_args)
|
||||||
title = livecd_title
|
title = livecd_title
|
||||||
gtk_warning(title, reason % (product.productName, needed_ram, total_ram))
|
gtk_warning(title, reason % reason_args)
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
else:
|
else:
|
||||||
reason += nolivecd_extra
|
reason += nolivecd_extra
|
||||||
stdoutLog.warning(reason % (product.productName, needed_ram, total_ram))
|
stdoutLog.warning(reason, **reason_args)
|
||||||
anaconda.displayMode = 't'
|
anaconda.displayMode = 't'
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
|
||||||
def startDebugger(signum, frame):
|
def startDebugger(signum, frame):
|
||||||
|
# pylint: disable-msg=F0401
|
||||||
import epdb
|
import epdb
|
||||||
epdb.serve(skip=1)
|
epdb.serve(skip=1)
|
||||||
|
|
||||||
def setupDisplay(anaconda, opts):
|
# pylint: disable-msg=W0621
|
||||||
|
def setupDisplay(anaconda, options, addons=None):
|
||||||
from pyanaconda.ui.tui.simpleline import App
|
from pyanaconda.ui.tui.simpleline import App
|
||||||
from pyanaconda.ui.tui.spokes.askvnc import AskVNCSpoke
|
from pyanaconda.ui.tui.spokes.askvnc import AskVNCSpoke
|
||||||
from pykickstart.constants import DISPLAY_MODE_TEXT
|
from pykickstart.constants import DISPLAY_MODE_TEXT
|
||||||
from pyanaconda import network
|
from pyanaconda.nm import nm_is_connected, nm_is_connecting
|
||||||
|
from blivet import arch
|
||||||
|
|
||||||
graphical_failed = 0
|
graphical_failed = 0
|
||||||
vncS = vnc.VncServer() # The vnc Server object.
|
vncS = vnc.VncServer() # The vnc Server object.
|
||||||
vncS.anaconda = anaconda
|
vncS.anaconda = anaconda
|
||||||
|
|
||||||
anaconda.displayMode = opts.display_mode
|
anaconda.displayMode = options.display_mode
|
||||||
anaconda.isHeadless = opts.isHeadless or iutil.isS390()
|
anaconda.isHeadless = options.isHeadless or arch.isS390()
|
||||||
|
|
||||||
if opts.vnc:
|
if options.vnc:
|
||||||
flags.usevnc = 1
|
flags.usevnc = 1
|
||||||
anaconda.displayMode = 'g'
|
anaconda.displayMode = 'g'
|
||||||
vncS.password = opts.vncpassword
|
vncS.password = options.vncpassword
|
||||||
|
|
||||||
# Only consider vncconnect when vnc is a param
|
# Only consider vncconnect when vnc is a param
|
||||||
if opts.vncconnect:
|
if options.vncconnect:
|
||||||
cargs = string.split(opts.vncconnect, ":")
|
cargs = string.split(options.vncconnect, ":")
|
||||||
vncS.vncconnecthost = cargs[0]
|
vncS.vncconnecthost = cargs[0]
|
||||||
if len(cargs) > 1 and len(cargs[1]) > 0:
|
if len(cargs) > 1 and len(cargs[1]) > 0:
|
||||||
if len(cargs[1]) > 0:
|
if len(cargs[1]) > 0:
|
||||||
vncS.vncconnectport = cargs[1]
|
vncS.vncconnectport = cargs[1]
|
||||||
|
|
||||||
if opts.serial:
|
if options.xdriver:
|
||||||
flags.serial = True
|
anaconda.xdriver = options.xdriver
|
||||||
if opts.virtpconsole:
|
|
||||||
flags.virtpconsole = opts.virtpconsole
|
|
||||||
|
|
||||||
if opts.xdriver:
|
|
||||||
anaconda.xdriver = opts.xdriver
|
|
||||||
anaconda.writeXdriver(root="/")
|
anaconda.writeXdriver(root="/")
|
||||||
|
|
||||||
if anaconda.rescue:
|
if anaconda.rescue:
|
||||||
@ -457,48 +489,33 @@ def setupDisplay(anaconda, opts):
|
|||||||
vncS.vncconnectport = anaconda.ksdata.vnc.port
|
vncS.vncconnectport = anaconda.ksdata.vnc.port
|
||||||
|
|
||||||
# disable VNC over text question when not enough memory is available
|
# disable VNC over text question when not enough memory is available
|
||||||
if iutil.memInstalled() < isys.MIN_GUI_RAM:
|
if blivet.util.total_memory() < isys.MIN_GUI_RAM:
|
||||||
|
stdoutLog.warning("Not asking for VNC because current memory (%d) < MIN_GUI_RAM (%d)", blivet.util.total_memory(), isys.MIN_GUI_RAM)
|
||||||
flags.vncquestion = False
|
flags.vncquestion = False
|
||||||
|
|
||||||
# disable VNC question if text mode is requested and this is a ks install
|
# disable VNC question if text mode is requested and this is a ks install
|
||||||
if anaconda.displayMode == 't' and flags.automatedInstall:
|
if anaconda.displayMode == 't' and flags.automatedInstall:
|
||||||
|
stdoutLog.warning("Not asking for VNC because of an automated install")
|
||||||
flags.vncquestion = False
|
flags.vncquestion = False
|
||||||
|
|
||||||
# disable VNC question if we were explicitly asked for text in kickstart
|
# disable VNC question if we were explicitly asked for text in kickstart
|
||||||
if anaconda.ksdata.displaymode.displayMode == DISPLAY_MODE_TEXT:
|
if anaconda.ksdata.displaymode.displayMode == DISPLAY_MODE_TEXT:
|
||||||
|
stdoutLog.warning("Not asking for VNC because text mode was explicitly asked for in kickstart")
|
||||||
flags.vncquestion = False
|
flags.vncquestion = False
|
||||||
|
|
||||||
# disable VNC question if we don't have network
|
# disable VNC question if we don't have network
|
||||||
if not network.hasActiveNetDev():
|
if not nm_is_connecting() and not nm_is_connected():
|
||||||
|
stdoutLog.warning("Not asking for VNC because we don't have a network")
|
||||||
flags.vncquestion = False
|
flags.vncquestion = False
|
||||||
|
|
||||||
# disable VNC question if we don't have X
|
# disable VNC question if we don't have Xvnc
|
||||||
if not os.access('/usr/bin/Xvnc', os.X_OK):
|
if not os.access('/usr/bin/Xvnc', os.X_OK):
|
||||||
|
stdoutLog.warning("Not asking for VNC because we don't have Xvnc")
|
||||||
flags.vncquestion = False
|
flags.vncquestion = False
|
||||||
|
|
||||||
if os.environ.has_key('DISPLAY'):
|
if os.environ.has_key('DISPLAY'):
|
||||||
flags.preexisting_x11 = True
|
flags.preexisting_x11 = True
|
||||||
|
|
||||||
if anaconda.displayMode == 't' and flags.vncquestion:
|
|
||||||
#we prefer vnc over text mode, so ask about that
|
|
||||||
message = _("Text mode provides a limited set of installation "
|
|
||||||
"options. It does not allow you to specify your "
|
|
||||||
"own partitioning layout or package selections. "
|
|
||||||
"Would you like to use VNC mode instead?")
|
|
||||||
|
|
||||||
app = App("VNC Question")
|
|
||||||
spoke = AskVNCSpoke(app, anaconda.ksdata, message=message)
|
|
||||||
app.schedule_screen(spoke)
|
|
||||||
app.run()
|
|
||||||
|
|
||||||
if anaconda.ksdata.vnc.enabled:
|
|
||||||
anaconda.displayMode = 'g'
|
|
||||||
flags.usevnc = 1
|
|
||||||
vncS.password = anaconda.ksdata.vnc.password
|
|
||||||
|
|
||||||
log.info("Display mode = %s" % anaconda.displayMode)
|
|
||||||
check_memory(anaconda, opts)
|
|
||||||
|
|
||||||
# Should we try to start Xorg?
|
# Should we try to start Xorg?
|
||||||
want_x = anaconda.displayMode == 'g' and \
|
want_x = anaconda.displayMode == 'g' and \
|
||||||
not (flags.preexisting_x11 or flags.usevnc)
|
not (flags.preexisting_x11 or flags.usevnc)
|
||||||
@ -519,6 +536,26 @@ def setupDisplay(anaconda, opts):
|
|||||||
anaconda.displayMode = 't'
|
anaconda.displayMode = 't'
|
||||||
want_x = False
|
want_x = False
|
||||||
|
|
||||||
|
if anaconda.displayMode == 't' and flags.vncquestion:
|
||||||
|
#we prefer vnc over text mode, so ask about that
|
||||||
|
message = _("Text mode provides a limited set of installation "
|
||||||
|
"options. It does not offer custom partitioning for "
|
||||||
|
"full control over the disk layout. Would you like "
|
||||||
|
"to use VNC mode instead?")
|
||||||
|
|
||||||
|
app = App("VNC Question")
|
||||||
|
spoke = AskVNCSpoke(app, anaconda.ksdata, message=message)
|
||||||
|
app.schedule_screen(spoke)
|
||||||
|
app.run()
|
||||||
|
|
||||||
|
if anaconda.ksdata.vnc.enabled:
|
||||||
|
anaconda.displayMode = 'g'
|
||||||
|
flags.usevnc = 1
|
||||||
|
vncS.password = anaconda.ksdata.vnc.password
|
||||||
|
|
||||||
|
log.info("Display mode = %s", anaconda.displayMode)
|
||||||
|
check_memory(anaconda, options)
|
||||||
|
|
||||||
if want_x:
|
if want_x:
|
||||||
# The following code depends on no SIGCHLD being delivered,
|
# The following code depends on no SIGCHLD being delivered,
|
||||||
# possibly only except the one from a failing X.org. Thus
|
# possibly only except the one from a failing X.org. Thus
|
||||||
@ -541,14 +578,14 @@ def setupDisplay(anaconda, opts):
|
|||||||
old_sigchld = signal.signal(signal.SIGCHLD, sigchld_handler)
|
old_sigchld = signal.signal(signal.SIGCHLD, sigchld_handler)
|
||||||
xout = open("/dev/tty5", "w")
|
xout = open("/dev/tty5", "w")
|
||||||
try:
|
try:
|
||||||
proc = subprocess.Popen(["Xorg", "-br",
|
subprocess.Popen(["Xorg", "-br",
|
||||||
"-logfile", "/tmp/X.log",
|
"-logfile", "/tmp/X.log",
|
||||||
":1", "vt7", "-s", "1440", "-ac",
|
":1", "vt7", "-s", "1440", "-ac",
|
||||||
"-nolisten", "tcp", "-dpi", "96",
|
"-nolisten", "tcp", "-dpi", "96",
|
||||||
"-noreset"],
|
"-noreset"],
|
||||||
close_fds=True,
|
close_fds=True,
|
||||||
stdout=xout, stderr=xout,
|
stdout=xout, stderr=xout,
|
||||||
preexec_fn=preexec_fn)
|
preexec_fn=preexec_fn)
|
||||||
|
|
||||||
signal.pause()
|
signal.pause()
|
||||||
os.environ["DISPLAY"] = ":1"
|
os.environ["DISPLAY"] = ":1"
|
||||||
@ -562,7 +599,8 @@ def setupDisplay(anaconda, opts):
|
|||||||
signal.signal(signal.SIGUSR1, old_sigusr1)
|
signal.signal(signal.SIGUSR1, old_sigusr1)
|
||||||
signal.signal(signal.SIGCHLD, old_sigchld)
|
signal.signal(signal.SIGCHLD, old_sigchld)
|
||||||
|
|
||||||
set_x_resolution(opts.runres)
|
if not graphical_failed:
|
||||||
|
doExtraX11Actions(options.runres)
|
||||||
|
|
||||||
if anaconda.displayMode == 't' and graphical_failed and \
|
if anaconda.displayMode == 't' and graphical_failed and \
|
||||||
flags.vncquestion and not anaconda.ksdata.vnc.enabled:
|
flags.vncquestion and not anaconda.ksdata.vnc.enabled:
|
||||||
@ -582,18 +620,14 @@ def setupDisplay(anaconda, opts):
|
|||||||
doStartupX11Actions()
|
doStartupX11Actions()
|
||||||
|
|
||||||
# with X running we can initialize the UI interface
|
# with X running we can initialize the UI interface
|
||||||
anaconda.initInterface()
|
anaconda.initInterface(addons)
|
||||||
|
|
||||||
anaconda.instClass.configure(anaconda)
|
anaconda.instClass.configure(anaconda)
|
||||||
|
|
||||||
def prompt_for_ssh():
|
def prompt_for_ssh():
|
||||||
# Do some work here to get the ip addr / hostname to pass
|
# Do some work here to get the ip addr / hostname to pass
|
||||||
# to the user.
|
# to the user.
|
||||||
from pyanaconda import network
|
|
||||||
from pyanaconda import isys
|
|
||||||
import socket
|
import socket
|
||||||
import gettext
|
|
||||||
_ = lambda x: gettext.ldgettext("anaconda", x)
|
|
||||||
|
|
||||||
ip = network.getFirstRealIP()
|
ip = network.getFirstRealIP()
|
||||||
|
|
||||||
@ -605,10 +639,9 @@ def prompt_for_ssh():
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
hinfo = socket.gethostbyaddr(ipstr)
|
hinfo = socket.gethostbyaddr(ipstr)
|
||||||
except Exception as e:
|
except socket.herror as e:
|
||||||
stdoutLog.debug("Exception caught trying to get host name of %s: %s" %
|
stdoutLog.debug("Exception caught trying to get host name of %s: %s", ipstr, e)
|
||||||
(ipstr, e))
|
name = network.getHostname()
|
||||||
name = network.getDefaultHostname(None)
|
|
||||||
else:
|
else:
|
||||||
if len(hinfo) == 3:
|
if len(hinfo) == 3:
|
||||||
name = hinfo[0]
|
name = hinfo[0]
|
||||||
@ -624,16 +657,31 @@ def prompt_for_ssh():
|
|||||||
connxinfo = None
|
connxinfo = None
|
||||||
|
|
||||||
if connxinfo:
|
if connxinfo:
|
||||||
stdoutLog.info(_("Please ssh install@%s to begin the install.") % connxinfo)
|
stdoutLog.info(_("Please ssh install@%s to begin the install."), connxinfo)
|
||||||
else:
|
else:
|
||||||
stdoutLog.info(_("Please ssh install@<host> to continue installation."))
|
stdoutLog.info(_("Please ssh install@<host> to continue installation."))
|
||||||
|
|
||||||
|
def cleanPStore():
|
||||||
|
"""remove files stored in nonvolatile ram created by the pstore subsystem"""
|
||||||
|
|
||||||
|
# files in pstore are linux (not distribution) specific, but we want to
|
||||||
|
# make sure the entirity of them are removed so as to ensure that there
|
||||||
|
# is sufficient free space on the flash part. On some machines this will
|
||||||
|
# take effect immediately, which is the best case. Unfortunately on some,
|
||||||
|
# an intervening reboot is needed."""
|
||||||
|
try:
|
||||||
|
for root, _dirs, files in os.walk("/sys/fs/pstore"):
|
||||||
|
for f in files:
|
||||||
|
os.unlink("%s/%s" % (root,f))
|
||||||
|
except OSError:
|
||||||
|
pass
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
print "Starting installer, one moment..."
|
print "Starting installer, one moment..."
|
||||||
|
|
||||||
# Allow a file to be loaded as early as possible
|
# Allow a file to be loaded as early as possible
|
||||||
try:
|
try:
|
||||||
|
# pylint: disable-msg=F0401,W0611
|
||||||
import updates_disk_hook
|
import updates_disk_hook
|
||||||
except ImportError:
|
except ImportError:
|
||||||
pass
|
pass
|
||||||
@ -642,11 +690,25 @@ if __name__ == "__main__":
|
|||||||
setupPythonUpdates()
|
setupPythonUpdates()
|
||||||
setupPythonPath()
|
setupPythonPath()
|
||||||
|
|
||||||
|
# init threading before Gtk can do anything and before we start using threads
|
||||||
|
# initThreading initializes the threadMgr instance, import it afterwards
|
||||||
|
from pyanaconda.threads import initThreading, AnacondaThread
|
||||||
|
initThreading()
|
||||||
|
from pyanaconda.threads import threadMgr
|
||||||
|
|
||||||
|
import gettext
|
||||||
|
_ = lambda x: gettext.ldgettext("anaconda", x)
|
||||||
|
|
||||||
|
from pyanaconda import constants
|
||||||
|
from pyanaconda.addons import collect_addon_paths
|
||||||
|
from pyanaconda import geoloc
|
||||||
|
|
||||||
# do this early so we can set flags before initializing logging
|
# do this early so we can set flags before initializing logging
|
||||||
from pyanaconda.flags import flags
|
from pyanaconda.flags import flags, can_touch_runtime_system
|
||||||
(opts, args, depr) = parseOptions(cmdline=flags.cmdline)
|
(opts, args, depr) = parseOptions(cmdline=flags.cmdline)
|
||||||
if opts.images:
|
|
||||||
flags.imageInstall = True
|
if opts.askmethod:
|
||||||
|
flags.askmethod = True
|
||||||
|
|
||||||
# Set up logging as early as possible.
|
# Set up logging as early as possible.
|
||||||
import logging
|
import logging
|
||||||
@ -654,6 +716,9 @@ if __name__ == "__main__":
|
|||||||
anaconda_log.init()
|
anaconda_log.init()
|
||||||
anaconda_log.logger.setupVirtio()
|
anaconda_log.logger.setupVirtio()
|
||||||
|
|
||||||
|
from pyanaconda import network
|
||||||
|
network.setup_ifcfg_log()
|
||||||
|
|
||||||
log = logging.getLogger("anaconda")
|
log = logging.getLogger("anaconda")
|
||||||
stdoutLog = logging.getLogger("anaconda.stdout")
|
stdoutLog = logging.getLogger("anaconda.stdout")
|
||||||
|
|
||||||
@ -661,10 +726,18 @@ if __name__ == "__main__":
|
|||||||
stdoutLog.error("anaconda must be run as root.")
|
stdoutLog.error("anaconda must be run as root.")
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
|
if opts.images and opts.dirinstall:
|
||||||
|
stdoutLog.error("--images and --dirinstall cannot be used at the same time")
|
||||||
|
sys.exit(0)
|
||||||
|
elif opts.images:
|
||||||
|
flags.imageInstall = True
|
||||||
|
elif opts.dirinstall:
|
||||||
|
flags.dirInstall = True
|
||||||
|
|
||||||
# see if we're on s390x and if we've got an ssh connection
|
# see if we're on s390x and if we've got an ssh connection
|
||||||
uname = os.uname()
|
uname = os.uname()
|
||||||
if uname[4] == 's390x':
|
if uname[4] == 's390x':
|
||||||
if 'TMUX' not in os.environ and "RUNKS" not in flags.cmdline:
|
if 'TMUX' not in os.environ and "RUNKS" not in flags.cmdline and not flags.imageInstall:
|
||||||
prompt_for_ssh()
|
prompt_for_ssh()
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
# If we get RUNKS, we default to cmdline display mode, because nothing
|
# If we get RUNKS, we default to cmdline display mode, because nothing
|
||||||
@ -672,7 +745,7 @@ if __name__ == "__main__":
|
|||||||
if "RUNKS" in flags.cmdline:
|
if "RUNKS" in flags.cmdline:
|
||||||
opts.display_mode = 'c'
|
opts.display_mode = 'c'
|
||||||
|
|
||||||
log.info("%s %s" % (sys.argv[0], getAnacondaVersion()))
|
log.info("%s %s", sys.argv[0], getAnacondaVersion())
|
||||||
|
|
||||||
# TODO: uncomment this when we're sure that we're doing the right thing
|
# TODO: uncomment this when we're sure that we're doing the right thing
|
||||||
# with flags.cmdline *everywhere* it appears...
|
# with flags.cmdline *everywhere* it appears...
|
||||||
@ -682,12 +755,11 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
# pull this in to get product name and versioning
|
# pull this in to get product name and versioning
|
||||||
from pyanaconda import product
|
from pyanaconda import product
|
||||||
from pyanaconda.constants import ROOT_PATH, DEFAULT_LANG
|
|
||||||
|
|
||||||
from pyanaconda import isys
|
from pyanaconda import isys
|
||||||
isys.initLog()
|
isys.initLog()
|
||||||
|
|
||||||
import signal, string, time
|
import signal, string
|
||||||
|
|
||||||
from pyanaconda import iutil
|
from pyanaconda import iutil
|
||||||
from pyanaconda import vnc
|
from pyanaconda import vnc
|
||||||
@ -702,16 +774,14 @@ if __name__ == "__main__":
|
|||||||
else:
|
else:
|
||||||
print "anaconda %s (pre-release) started." % verdesc
|
print "anaconda %s (pre-release) started." % verdesc
|
||||||
|
|
||||||
import gettext
|
from pyanaconda.anaconda import Anaconda
|
||||||
_ = lambda x: gettext.ldgettext("anaconda", x)
|
|
||||||
|
|
||||||
from pyanaconda import Anaconda
|
|
||||||
anaconda = Anaconda()
|
anaconda = Anaconda()
|
||||||
iutil.setup_translations(gettext)
|
iutil.setup_translations(gettext)
|
||||||
|
|
||||||
# reset python's default SIGINT handler
|
# reset python's default SIGINT handler
|
||||||
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
signal.signal(signal.SIGINT, signal.SIG_IGN)
|
||||||
signal.signal(signal.SIGSEGV, isys.handleSegv)
|
signal.signal(signal.SIGSEGV, isys.handleSegv)
|
||||||
|
signal.signal(signal.SIGTERM, lambda num, frame: sys.exit(1))
|
||||||
|
|
||||||
setupEnvironment()
|
setupEnvironment()
|
||||||
# make sure we have /var/log soon, some programs fail to start without it
|
# make sure we have /var/log soon, some programs fail to start without it
|
||||||
@ -763,8 +833,7 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
if opts.module:
|
if opts.module:
|
||||||
for mod in opts.module:
|
for mod in opts.module:
|
||||||
(path, name) = string.split(mod, ":")
|
anaconda.extraModules.append(mod.split(":"))
|
||||||
anaconda.extraModules.append((path, name))
|
|
||||||
|
|
||||||
if opts.ibft:
|
if opts.ibft:
|
||||||
flags.ibft = 1
|
flags.ibft = 1
|
||||||
@ -778,12 +847,19 @@ if __name__ == "__main__":
|
|||||||
if opts.armPlatform:
|
if opts.armPlatform:
|
||||||
flags.armPlatform = opts.armPlatform
|
flags.armPlatform = opts.armPlatform
|
||||||
|
|
||||||
|
if opts.extlinux:
|
||||||
|
flags.extlinux = opts.extlinux
|
||||||
|
|
||||||
|
if opts.dnf:
|
||||||
|
flags.dnf = opts.dnf
|
||||||
|
|
||||||
# set flags
|
# set flags
|
||||||
flags.dmraid = opts.dmraid
|
flags.dmraid = opts.dmraid
|
||||||
flags.mpath = opts.mpath
|
flags.mpath = opts.mpath
|
||||||
flags.selinux = opts.selinux
|
flags.selinux = opts.selinux
|
||||||
|
flags.eject = opts.eject
|
||||||
|
|
||||||
if not flags.livecdInstall and not flags.imageInstall:
|
if can_touch_runtime_system("start audit daemon"):
|
||||||
startAuditDaemon()
|
startAuditDaemon()
|
||||||
|
|
||||||
# setup links required for all install types
|
# setup links required for all install types
|
||||||
@ -792,7 +868,7 @@ if __name__ == "__main__":
|
|||||||
try:
|
try:
|
||||||
if os.path.exists("/mnt/runtime/etc/" + i):
|
if os.path.exists("/mnt/runtime/etc/" + i):
|
||||||
os.symlink ("../mnt/runtime/etc/" + i, "/etc/" + i)
|
os.symlink ("../mnt/runtime/etc/" + i, "/etc/" + i)
|
||||||
except:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if opts.debug:
|
if opts.debug:
|
||||||
@ -801,34 +877,38 @@ if __name__ == "__main__":
|
|||||||
if opts.rescue:
|
if opts.rescue:
|
||||||
anaconda.rescue = True
|
anaconda.rescue = True
|
||||||
|
|
||||||
log.info("anaconda called with cmdline = %s" %(sys.argv,))
|
log.info("anaconda called with cmdline = %s", sys.argv)
|
||||||
log.info("Default encoding = %s " % sys.getdefaultencoding())
|
log.info("Default encoding = %s ", sys.getdefaultencoding())
|
||||||
|
|
||||||
os.system("udevadm control --env=ANACONDA=1")
|
os.system("udevadm control --env=ANACONDA=1")
|
||||||
|
|
||||||
|
# Collect all addon paths
|
||||||
|
addon_paths = collect_addon_paths(constants.ADDON_PATHS)
|
||||||
|
|
||||||
# If we were given a kickstart file on the command line, parse (but do not
|
# If we were given a kickstart file on the command line, parse (but do not
|
||||||
# execute) that now. Otherwise, load in defaults from kickstart files
|
# execute) that now. Otherwise, load in defaults from kickstart files
|
||||||
# shipped with the installation media.
|
# shipped with the installation media.
|
||||||
ksdata = None
|
ksdata = None
|
||||||
if opts.ksfile:
|
if opts.ksfile:
|
||||||
flags.automatedInstall = True
|
flags.automatedInstall = True
|
||||||
files = [opts.ksfile]
|
flags.eject = False
|
||||||
|
ksFiles = [opts.ksfile]
|
||||||
else:
|
else:
|
||||||
files = ["/tmp/updates/interactive-defaults.ks",
|
ksFiles = ["/tmp/updates/interactive-defaults.ks",
|
||||||
"/usr/share/anaconda/interactive-defaults.ks"]
|
"/usr/share/anaconda/interactive-defaults.ks"]
|
||||||
|
|
||||||
for f in files:
|
for ks in ksFiles:
|
||||||
if not os.path.exists(f):
|
if not os.path.exists(ks):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
kickstart.preScriptPass(f)
|
kickstart.preScriptPass(ks)
|
||||||
ksdata = kickstart.parseKickstart(f)
|
ksdata = kickstart.parseKickstart(ks)
|
||||||
|
|
||||||
# Only load the first defaults file we find.
|
# Only load the first defaults file we find.
|
||||||
break
|
break
|
||||||
|
|
||||||
if not ksdata:
|
if not ksdata:
|
||||||
ksdata = kickstart.AnacondaKSHandler()
|
ksdata = kickstart.AnacondaKSHandler(addon_paths["ks"])
|
||||||
|
|
||||||
if ksdata.rescue.rescue:
|
if ksdata.rescue.rescue:
|
||||||
anaconda.rescue = True
|
anaconda.rescue = True
|
||||||
@ -845,7 +925,7 @@ if __name__ == "__main__":
|
|||||||
if not ksdata.keyboard.keyboard:
|
if not ksdata.keyboard.keyboard:
|
||||||
ksdata.keyboard.keyboard = opts.keymap
|
ksdata.keyboard.keyboard = opts.keymap
|
||||||
|
|
||||||
if ksdata.keyboard.keyboard:
|
if ksdata.keyboard.keyboard and can_touch_runtime_system("activate keyboard"):
|
||||||
keyboard.activate_keyboard(ksdata.keyboard)
|
keyboard.activate_keyboard(ksdata.keyboard)
|
||||||
|
|
||||||
# Some post-install parts of anaconda are implemented as kickstart
|
# Some post-install parts of anaconda are implemented as kickstart
|
||||||
@ -853,19 +933,24 @@ if __name__ == "__main__":
|
|||||||
kickstart.appendPostScripts(ksdata)
|
kickstart.appendPostScripts(ksdata)
|
||||||
|
|
||||||
# cmdline flags override kickstart settings
|
# cmdline flags override kickstart settings
|
||||||
ksdata.method.proxy = anaconda.proxy
|
if anaconda.proxy:
|
||||||
ksdata.method.noverifyssl = flags.noverifyssl
|
ksdata.method.proxy = anaconda.proxy
|
||||||
|
if flags.noverifyssl:
|
||||||
|
ksdata.method.noverifyssl = flags.noverifyssl
|
||||||
|
if opts.multiLib:
|
||||||
|
# sets yum's multilib_policy to "all" (as opposed to "best")
|
||||||
|
ksdata.packages.multiLib = opts.multiLib
|
||||||
|
|
||||||
# set ksdata.method based on anaconda.method if it isn't already set
|
# set ksdata.method based on anaconda.method if it isn't already set
|
||||||
if anaconda.methodstr and not ksdata.method.method:
|
if anaconda.methodstr and not ksdata.method.seen:
|
||||||
if anaconda.methodstr.startswith("cdrom"):
|
if anaconda.methodstr.startswith("cdrom"):
|
||||||
ksdata.method.method = "cdrom"
|
ksdata.method.method = "cdrom"
|
||||||
elif anaconda.methodstr.startswith("nfs"):
|
elif anaconda.methodstr.startswith("nfs"):
|
||||||
ksdata.method.method = "nfs"
|
ksdata.method.method = "nfs"
|
||||||
(options, server, path) = iutil.parseNfsUrl(anaconda.methodstr)
|
(nfsOptions, server, path) = iutil.parseNfsUrl(anaconda.methodstr)
|
||||||
ksdata.method.server = server
|
ksdata.method.server = server
|
||||||
ksdata.method.dir = path
|
ksdata.method.dir = path
|
||||||
ksdata.method.opts = options
|
ksdata.method.opts = nfsOptions
|
||||||
elif anaconda.methodstr.startswith("hd:"):
|
elif anaconda.methodstr.startswith("hd:"):
|
||||||
ksdata.method.method = "harddrive"
|
ksdata.method.method = "harddrive"
|
||||||
url = anaconda.methodstr.split(":", 1)[1]
|
url = anaconda.methodstr.split(":", 1)[1]
|
||||||
@ -884,43 +969,58 @@ if __name__ == "__main__":
|
|||||||
anaconda.methodstr.startswith("ftp"):
|
anaconda.methodstr.startswith("ftp"):
|
||||||
ksdata.method.method = "url"
|
ksdata.method.method = "url"
|
||||||
ksdata.method.url = anaconda.methodstr
|
ksdata.method.url = anaconda.methodstr
|
||||||
|
# installation source specified by bootoption
|
||||||
|
# overrides source set from kickstart;
|
||||||
|
# the kickstart might have specified a mirror list,
|
||||||
|
# so we need to clear it here if plain url source is provided
|
||||||
|
# by a bootoption, because having both url & mirror list
|
||||||
|
# set at once is not supported and breaks Yum in
|
||||||
|
# unpredictable ways
|
||||||
|
ksdata.method.mirrorlist = None
|
||||||
elif anaconda.methodstr.startswith("livecd"):
|
elif anaconda.methodstr.startswith("livecd"):
|
||||||
ksdata.method.method = "livecd"
|
ksdata.method.method = "harddrive"
|
||||||
device = anaconda.methodstr.split(":", 1)[1]
|
device = anaconda.methodstr.split(":", 1)[1]
|
||||||
ksdata.method.partition = os.path.normpath(device)
|
ksdata.method.partition = os.path.normpath(device)
|
||||||
else:
|
else:
|
||||||
log.error("Unknown method: %s", (anaconda.methodstr,))
|
log.error("Unknown method: %s", anaconda.methodstr)
|
||||||
|
|
||||||
|
from pyanaconda import localization
|
||||||
# Set the language before loading an interface, when it may be too late.
|
# Set the language before loading an interface, when it may be too late.
|
||||||
if opts.lang:
|
|
||||||
from pyanaconda.localization import Language, LOCALE_PREFERENCES, expand_langs
|
|
||||||
|
|
||||||
langObj = Language(LOCALE_PREFERENCES, territory=None)
|
# check if the LANG environmental variable is set
|
||||||
|
env_lang = os.environ.get("LANG")
|
||||||
|
if env_lang is not None:
|
||||||
|
# parse it using langtable
|
||||||
|
env_langs = localization.get_language_locales(env_lang)
|
||||||
|
# if parsed LANG is the same as our default language - ignore it;
|
||||||
|
# otherwise use it as valid language candidate
|
||||||
|
if env_langs and env_langs[0] != constants.DEFAULT_LANG:
|
||||||
|
env_lang = env_langs[0] # the first language is the best match
|
||||||
|
else:
|
||||||
|
env_lang = None
|
||||||
|
|
||||||
# Given something other than the long format we prefer? We need to
|
requested_lang = opts.lang or ksdata.lang.lang or env_lang
|
||||||
# dig through supported translations to figure out what the user
|
|
||||||
# meant.
|
|
||||||
if not opts.lang in langObj.translations:
|
|
||||||
foundLang = False
|
|
||||||
|
|
||||||
for trans in langObj.translations.keys():
|
if requested_lang:
|
||||||
if opts.lang in expand_langs(trans):
|
locales = localization.get_language_locales(requested_lang)
|
||||||
opts.lang = trans
|
if locales:
|
||||||
foundLang = True
|
localization.setup_locale(locales[0], ksdata.lang)
|
||||||
break
|
ksdata.lang.seen = True
|
||||||
|
else:
|
||||||
|
log.error("Invalid locale '%s' given on command line or in kickstart", requested_lang)
|
||||||
|
else:
|
||||||
|
# no kickstart or bootoption - use default
|
||||||
|
localization.setup_locale(constants.DEFAULT_LANG, ksdata.lang)
|
||||||
|
|
||||||
if not foundLang:
|
import blivet
|
||||||
opts.lang = "en_US.UTF-8"
|
blivet.enable_installer_mode()
|
||||||
|
|
||||||
langObj.set_install_lang(opts.lang)
|
|
||||||
ksdata.lang.lang = opts.lang
|
|
||||||
|
|
||||||
# init threading before Gtk can do anything
|
|
||||||
from pyanaconda.threads import initThreading, threadMgr, AnacondaThread
|
|
||||||
initThreading()
|
|
||||||
|
|
||||||
# now start the interface
|
# now start the interface
|
||||||
setupDisplay(anaconda, opts)
|
setupDisplay(anaconda, opts, addon_paths)
|
||||||
|
|
||||||
|
if anaconda.rescue:
|
||||||
|
from pyanaconda import rescue
|
||||||
|
anaconda.intf = rescue.RescueInterface()
|
||||||
|
|
||||||
# Set flag to prompt for missing ks data
|
# Set flag to prompt for missing ks data
|
||||||
if anaconda.displayMode == 'c':
|
if anaconda.displayMode == 'c':
|
||||||
@ -931,59 +1031,87 @@ if __name__ == "__main__":
|
|||||||
image_spec = image.rsplit(":", 1)
|
image_spec = image.rsplit(":", 1)
|
||||||
path = image_spec[0]
|
path = image_spec[0]
|
||||||
if len(image_spec) == 2 and image_spec[1].strip():
|
if len(image_spec) == 2 and image_spec[1].strip():
|
||||||
name = image_spec[1].strip()
|
imageName = image_spec[1].strip()
|
||||||
else:
|
else:
|
||||||
name = os.path.splitext(os.path.basename(path))[0]
|
imageName = os.path.splitext(os.path.basename(path))[0]
|
||||||
|
|
||||||
if "/" in name or name in anaconda.storage.config.diskImages.keys():
|
if "/" in imageName or imageName in anaconda.storage.config.diskImages.keys():
|
||||||
name = "diskimg%d" % image_count
|
imageName = "diskimg%d" % image_count
|
||||||
|
|
||||||
log.info("naming disk image '%s' '%s'" % (path, name))
|
log.info("naming disk image '%s' '%s'", path, imageName)
|
||||||
anaconda.storage.config.diskImages[name] = path
|
anaconda.storage.config.diskImages[imageName] = path
|
||||||
image_count += 1
|
image_count += 1
|
||||||
flags.imageInstall = True
|
flags.imageInstall = True
|
||||||
|
|
||||||
if image_count:
|
if image_count:
|
||||||
anaconda.storage.setupDiskImages()
|
anaconda.storage.setupDiskImages()
|
||||||
anaconda.simpleFilter = True
|
|
||||||
|
|
||||||
# sets yum's multilib_policy to "all" (as opposed to "best")
|
|
||||||
ksdata.packages.multiLib = opts.multiLib
|
|
||||||
|
|
||||||
from pyanaconda import exception
|
from pyanaconda import exception
|
||||||
if anaconda.displayMode == 'g':
|
# comment out the next line to make exceptions non-fatal
|
||||||
# comment out the next line to make exceptions non-fatal
|
anaconda.mehConfig = exception.initExceptionHandling(anaconda)
|
||||||
anaconda.mehConfig = exception.initExceptionHandling(anaconda)
|
|
||||||
|
|
||||||
# add our own additional signal handlers
|
# add our own additional signal handlers
|
||||||
signal.signal(signal.SIGUSR1, lambda signum, frame:
|
signal.signal(signal.SIGUSR1, lambda signum, frame:
|
||||||
exception.test_exception_handling())
|
exception.test_exception_handling())
|
||||||
signal.signal(signal.SIGUSR2, lambda signum, frame: anaconda.dumpState())
|
signal.signal(signal.SIGUSR2, lambda signum, frame: anaconda.dumpState())
|
||||||
|
|
||||||
if opts.lang:
|
from blivet import storageInitialize
|
||||||
# this is lame, but make things match what we expect (#443408)
|
|
||||||
opts.lang = opts.lang.replace(".utf8", ".UTF-8")
|
|
||||||
|
|
||||||
from pyanaconda.storage import storageInitialize
|
|
||||||
from pyanaconda.packaging import payloadInitialize
|
from pyanaconda.packaging import payloadInitialize
|
||||||
from pyanaconda.network import networkInitialize
|
from pyanaconda.network import networkInitialize, wait_for_connecting_NM_thread
|
||||||
|
from pyanaconda.timezone import time_initialize
|
||||||
|
|
||||||
if anaconda.rescue:
|
if anaconda.rescue:
|
||||||
from pyanaconda.rescue import doRescue
|
rescue.doRescue(anaconda.intf, anaconda.rescue_mount, ksdata)
|
||||||
doRescue(anaconda.rescue_mount, ksdata, anaconda.platform)
|
else:
|
||||||
|
cleanPStore()
|
||||||
|
|
||||||
threadMgr.add(AnacondaThread(name="AnaStorageThread", target=storageInitialize, args=(anaconda.storage, ksdata, anaconda.protected)))
|
networkInitialize(ksdata)
|
||||||
threadMgr.add(AnacondaThread(name="AnaNetworkThread", target=networkInitialize, args=(ksdata,)))
|
if not flags.dirInstall:
|
||||||
threadMgr.add(AnacondaThread(name="AnaPayloadThread", target=payloadInitialize, args=(anaconda.storage, ksdata, anaconda.payload)))
|
threadMgr.add(AnacondaThread(name=constants.THREAD_STORAGE, target=storageInitialize,
|
||||||
|
args=(anaconda.storage, ksdata, anaconda.protected)))
|
||||||
|
threadMgr.add(AnacondaThread(name=constants.THREAD_TIME_INIT, target=time_initialize,
|
||||||
|
args=(ksdata.timezone, anaconda.storage, anaconda.bootloader)))
|
||||||
|
|
||||||
|
threadMgr.add(AnacondaThread(name=constants.THREAD_WAIT_FOR_CONNECTING_NM, target=wait_for_connecting_NM_thread, args=(ksdata,)))
|
||||||
|
threadMgr.add(AnacondaThread(name=constants.THREAD_PAYLOAD, target=payloadInitialize, args=(anaconda.storage, ksdata, anaconda.payload)))
|
||||||
|
|
||||||
atexit.register(exitHandler, ksdata.reboot, anaconda.storage)
|
atexit.register(exitHandler, ksdata.reboot, anaconda.storage)
|
||||||
|
|
||||||
# setup ntp servers and start NTP daemon if not requested otherwise
|
# check if geolocation should be enabled for this type of installation
|
||||||
if (not flags.imageInstall) and anaconda.ksdata.timezone.ntpservers:
|
use_geolocation = True
|
||||||
ntp.save_servers_to_config(anaconda.ksdata.timezone.ntpservers)
|
if flags.imageInstall or flags.dirInstall:
|
||||||
|
use_geolocation = False
|
||||||
|
# and also check if it was not disabled by boot option
|
||||||
|
else:
|
||||||
|
# flags.cmdline.getbool is used as it handles values such as
|
||||||
|
# 0, no, off and also nogeoloc as False
|
||||||
|
# and other values or geoloc not being present as True
|
||||||
|
use_geolocation = flags.cmdline.getbool('geoloc', True)
|
||||||
|
|
||||||
if not anaconda.ksdata.timezone.nontp:
|
|
||||||
iutil.start_service("chronyd")
|
if use_geolocation:
|
||||||
|
provider_id = constants.GEOLOC_DEFAULT_PROVIDER
|
||||||
|
# check if a provider was specified by an option
|
||||||
|
if opts.geoloc is not None:
|
||||||
|
parsed_id = geoloc.get_provider_id_from_option(opts.geoloc)
|
||||||
|
if parsed_id is None:
|
||||||
|
log.error('geoloc: wrong provider id specified: %s', opts.geoloc)
|
||||||
|
else:
|
||||||
|
provider_id = parsed_id
|
||||||
|
# instantiate the geolocation module and start location data refresh
|
||||||
|
geoloc.init_geolocation(provider_id=provider_id)
|
||||||
|
geoloc.refresh()
|
||||||
|
|
||||||
|
# setup ntp servers and start NTP daemon if not requested otherwise
|
||||||
|
if can_touch_runtime_system("start chronyd"):
|
||||||
|
if anaconda.ksdata.timezone.ntpservers:
|
||||||
|
ntp.save_servers_to_config(anaconda.ksdata.timezone.ntpservers)
|
||||||
|
|
||||||
|
if not anaconda.ksdata.timezone.nontp:
|
||||||
|
iutil.start_service("chronyd")
|
||||||
|
|
||||||
|
# try to load firmware language
|
||||||
|
localization.load_firmware_language(ksdata.lang)
|
||||||
|
|
||||||
# FIXME: This will need to be made cleaner once this file starts to take
|
# FIXME: This will need to be made cleaner once this file starts to take
|
||||||
# shape with the new UI code.
|
# shape with the new UI code.
|
||||||
|
File diff suppressed because it is too large
Load Diff
10
anaconda/autogen.sh
Executable file
10
anaconda/autogen.sh
Executable 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 )
|
@ -91,9 +91,6 @@
|
|||||||
/* Define to 1 if you have the <libintl.h> header file. */
|
/* Define to 1 if you have the <libintl.h> header file. */
|
||||||
#undef HAVE_LIBINTL_H
|
#undef HAVE_LIBINTL_H
|
||||||
|
|
||||||
/* Define to 1 if you have the `selinux' library (-lselinux). */
|
|
||||||
#undef HAVE_LIBSELINUX
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <limits.h> header file. */
|
/* Define to 1 if you have the <limits.h> header file. */
|
||||||
#undef HAVE_LIMITS_H
|
#undef HAVE_LIMITS_H
|
||||||
|
|
||||||
@ -346,6 +343,10 @@
|
|||||||
such a type exists and the standard includes do not define it. */
|
such a type exists and the standard includes do not define it. */
|
||||||
#undef int32_t
|
#undef int32_t
|
||||||
|
|
||||||
|
/* Define to the type of a signed integer type of width exactly 64 bits if
|
||||||
|
such a type exists and the standard includes do not define it. */
|
||||||
|
#undef int64_t
|
||||||
|
|
||||||
/* Define to rpl_malloc if the replacement function should be used. */
|
/* Define to rpl_malloc if the replacement function should be used. */
|
||||||
#undef malloc
|
#undef malloc
|
||||||
|
|
||||||
|
34
anaconda/config.rpath
Normal file → Executable file
34
anaconda/config.rpath
Normal file → Executable file
@ -2,7 +2,7 @@
|
|||||||
# Output a system dependent set of variables, describing how to set the
|
# Output a system dependent set of variables, describing how to set the
|
||||||
# run time search path of shared libraries in an executable.
|
# run time search path of shared libraries in an executable.
|
||||||
#
|
#
|
||||||
# Copyright 1996-2007 Free Software Foundation, Inc.
|
# Copyright 1996-2010 Free Software Foundation, Inc.
|
||||||
# Taken from GNU libtool, 2001
|
# Taken from GNU libtool, 2001
|
||||||
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
|
||||||
#
|
#
|
||||||
@ -47,7 +47,7 @@ for cc_temp in $CC""; do
|
|||||||
done
|
done
|
||||||
cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
|
cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
|
||||||
|
|
||||||
# Code taken from libtool.m4's AC_LIBTOOL_PROG_COMPILER_PIC.
|
# Code taken from libtool.m4's _LT_COMPILER_PIC.
|
||||||
|
|
||||||
wl=
|
wl=
|
||||||
if test "$GCC" = yes; then
|
if test "$GCC" = yes; then
|
||||||
@ -64,7 +64,7 @@ else
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
mingw* | cygwin* | pw32* | os2*)
|
mingw* | cygwin* | pw32* | os2* | cegcc*)
|
||||||
;;
|
;;
|
||||||
hpux9* | hpux10* | hpux11*)
|
hpux9* | hpux10* | hpux11*)
|
||||||
wl='-Wl,'
|
wl='-Wl,'
|
||||||
@ -76,7 +76,13 @@ else
|
|||||||
;;
|
;;
|
||||||
linux* | k*bsd*-gnu)
|
linux* | k*bsd*-gnu)
|
||||||
case $cc_basename in
|
case $cc_basename in
|
||||||
icc* | ecc*)
|
ecc*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
icc* | ifort*)
|
||||||
|
wl='-Wl,'
|
||||||
|
;;
|
||||||
|
lf95*)
|
||||||
wl='-Wl,'
|
wl='-Wl,'
|
||||||
;;
|
;;
|
||||||
pgcc | pgf77 | pgf90)
|
pgcc | pgf77 | pgf90)
|
||||||
@ -124,7 +130,7 @@ else
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
|
# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
|
||||||
|
|
||||||
hardcode_libdir_flag_spec=
|
hardcode_libdir_flag_spec=
|
||||||
hardcode_libdir_separator=
|
hardcode_libdir_separator=
|
||||||
@ -132,7 +138,7 @@ hardcode_direct=no
|
|||||||
hardcode_minus_L=no
|
hardcode_minus_L=no
|
||||||
|
|
||||||
case "$host_os" in
|
case "$host_os" in
|
||||||
cygwin* | mingw* | pw32*)
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
# FIXME: the MSVC++ port hasn't been tested in a loooong time
|
||||||
# When not using gcc, we currently assume that we are using
|
# When not using gcc, we currently assume that we are using
|
||||||
# Microsoft Visual C++.
|
# Microsoft Visual C++.
|
||||||
@ -158,7 +164,7 @@ if test "$with_gnu_ld" = yes; then
|
|||||||
# option of GNU ld is called -rpath, not --rpath.
|
# option of GNU ld is called -rpath, not --rpath.
|
||||||
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
|
||||||
case "$host_os" in
|
case "$host_os" in
|
||||||
aix3* | aix4* | aix5*)
|
aix[3-9]*)
|
||||||
# On AIX/PPC, the GNU linker is very broken
|
# On AIX/PPC, the GNU linker is very broken
|
||||||
if test "$host_cpu" != ia64; then
|
if test "$host_cpu" != ia64; then
|
||||||
ld_shlibs=no
|
ld_shlibs=no
|
||||||
@ -182,7 +188,7 @@ if test "$with_gnu_ld" = yes; then
|
|||||||
ld_shlibs=no
|
ld_shlibs=no
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
cygwin* | mingw* | pw32*)
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||||
# no search path for DLLs.
|
# no search path for DLLs.
|
||||||
hardcode_libdir_flag_spec='-L$libdir'
|
hardcode_libdir_flag_spec='-L$libdir'
|
||||||
@ -254,7 +260,7 @@ else
|
|||||||
hardcode_direct=unsupported
|
hardcode_direct=unsupported
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
aix4* | aix5*)
|
aix[4-9]*)
|
||||||
if test "$host_cpu" = ia64; then
|
if test "$host_cpu" = ia64; then
|
||||||
# On IA64, the linker does run time linking by default, so we don't
|
# On IA64, the linker does run time linking by default, so we don't
|
||||||
# have to do anything special.
|
# have to do anything special.
|
||||||
@ -264,7 +270,7 @@ else
|
|||||||
# Test if we are trying to use run time linking or normal
|
# Test if we are trying to use run time linking or normal
|
||||||
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
|
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
|
||||||
# need to do runtime linking.
|
# need to do runtime linking.
|
||||||
case $host_os in aix4.[23]|aix4.[23].*|aix5*)
|
case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
|
||||||
for ld_flag in $LDFLAGS; do
|
for ld_flag in $LDFLAGS; do
|
||||||
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
|
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
|
||||||
aix_use_runtimelinking=yes
|
aix_use_runtimelinking=yes
|
||||||
@ -326,7 +332,7 @@ else
|
|||||||
;;
|
;;
|
||||||
bsdi[45]*)
|
bsdi[45]*)
|
||||||
;;
|
;;
|
||||||
cygwin* | mingw* | pw32*)
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
# When not using gcc, we currently assume that we are using
|
# When not using gcc, we currently assume that we are using
|
||||||
# Microsoft Visual C++.
|
# Microsoft Visual C++.
|
||||||
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
# hardcode_libdir_flag_spec is actually meaningless, as there is
|
||||||
@ -494,7 +500,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Check dynamic linker characteristics
|
# Check dynamic linker characteristics
|
||||||
# Code taken from libtool.m4's AC_LIBTOOL_SYS_DYNAMIC_LINKER.
|
# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
|
||||||
# Unlike libtool.m4, here we don't care about _all_ names of the library, but
|
# Unlike libtool.m4, here we don't care about _all_ names of the library, but
|
||||||
# only about the one the linker finds when passed -lNAME. This is the last
|
# only about the one the linker finds when passed -lNAME. This is the last
|
||||||
# element of library_names_spec in libtool.m4, or possibly two of them if the
|
# element of library_names_spec in libtool.m4, or possibly two of them if the
|
||||||
@ -505,7 +511,7 @@ case "$host_os" in
|
|||||||
aix3*)
|
aix3*)
|
||||||
library_names_spec='$libname.a'
|
library_names_spec='$libname.a'
|
||||||
;;
|
;;
|
||||||
aix4* | aix5*)
|
aix[4-9]*)
|
||||||
library_names_spec='$libname$shrext'
|
library_names_spec='$libname$shrext'
|
||||||
;;
|
;;
|
||||||
amigaos*)
|
amigaos*)
|
||||||
@ -517,7 +523,7 @@ case "$host_os" in
|
|||||||
bsdi[45]*)
|
bsdi[45]*)
|
||||||
library_names_spec='$libname$shrext'
|
library_names_spec='$libname$shrext'
|
||||||
;;
|
;;
|
||||||
cygwin* | mingw* | pw32*)
|
cygwin* | mingw* | pw32* | cegcc*)
|
||||||
shrext=.dll
|
shrext=.dll
|
||||||
library_names_spec='$libname.dll.a $libname.lib'
|
library_names_spec='$libname.dll.a $libname.lib'
|
||||||
;;
|
;;
|
||||||
|
1478
anaconda/configure
vendored
1478
anaconda/configure
vendored
File diff suppressed because it is too large
Load Diff
@ -20,8 +20,8 @@
|
|||||||
m4_define(python_required_version, 2.5)
|
m4_define(python_required_version, 2.5)
|
||||||
|
|
||||||
AC_PREREQ([2.63])
|
AC_PREREQ([2.63])
|
||||||
AC_INIT([anaconda], [18.37.11], [anaconda-devel-list@redhat.com])
|
AC_INIT([anaconda], [20.25.16], [anaconda-devel-list@redhat.com])
|
||||||
AM_INIT_AUTOMAKE([foreign no-dist-gzip dist-bzip2])
|
AM_INIT_AUTOMAKE([foreign no-dist-gzip dist-bzip2 tar-ustar])
|
||||||
|
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
@ -38,7 +38,33 @@ AC_PROG_LN_S
|
|||||||
AC_PROG_MAKE_SET
|
AC_PROG_MAKE_SET
|
||||||
AC_PROG_LIBTOOL
|
AC_PROG_LIBTOOL
|
||||||
|
|
||||||
|
# Check for the intltool programs
|
||||||
|
# These checks and subsitutions are adapted IT_PROG_INTLTOOL provided in
|
||||||
|
# intltool.m4, but without the parts where it breaks gettext.
|
||||||
|
AC_PATH_PROG([INTLTOOL_EXTRACT], [intltool-extract])
|
||||||
|
AC_PATH_PROG([INTLTOOL_MERGE], [intltool-merge])
|
||||||
|
AS_IF([test -z "$INTLTOOL_EXTRACT" -o -z "$INTLTOOL_MERGE"],
|
||||||
|
[AC_MSG_ERROR([*** intltool not found])])
|
||||||
|
|
||||||
|
# Add the bits for Makefile rules
|
||||||
|
INTLTOOL_V_MERGE='$(INTLTOOL__v_MERGE_$(V))'
|
||||||
|
INTLTOOL__v_MERGE_='$(INTLTOOL__v_MERGE_$(AM_DEFAULT_VERBOSITY))'
|
||||||
|
INTLTOOL__v_MERGE_0='@echo " ITMRG " $@;'
|
||||||
|
INTLTOOL_V_MERGE_OPTIONS='$(intltool__v_merge_options_$(V))'
|
||||||
|
intltool__v_merge_options_='$(intltool__v_merge_options_$(AM_DEFAULT_VERBOSITY))'
|
||||||
|
intltool__v_merge_options_0='-q'
|
||||||
|
AC_SUBST(INTLTOOL_V_MERGE)
|
||||||
|
AC_SUBST(INTLTOOL__v_MERGE_)
|
||||||
|
AC_SUBST(INTLTOOL__v_MERGE_0)
|
||||||
|
AC_SUBST(INTLTOOL_V_MERGE_OPTIONS)
|
||||||
|
AC_SUBST(intltool__v_merge_options_)
|
||||||
|
AC_SUBST(intltool__v_merge_options_0)
|
||||||
|
|
||||||
|
INTLTOOL_DESKTOP_RULE='%.desktop: %.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; $(INTLTOOL_V_MERGE)LC_ALL=C $(INTLTOOL_MERGE) $(INTLTOOL_V_MERGE_OPTIONS) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
|
||||||
|
AC_SUBST(INTLTOOL_DESKTOP_RULE)
|
||||||
|
|
||||||
AM_GNU_GETTEXT([external])
|
AM_GNU_GETTEXT([external])
|
||||||
|
AM_GNU_GETTEXT_VERSION([0.18.1])
|
||||||
|
|
||||||
# Checks for libraries.
|
# Checks for libraries.
|
||||||
AC_CHECK_LIB([X11], [XGetWindowAttributes],
|
AC_CHECK_LIB([X11], [XGetWindowAttributes],
|
||||||
@ -49,18 +75,6 @@ AC_CHECK_LIB([audit], [audit_open],
|
|||||||
[AC_SUBST(AUDIT_LIBS, [-laudit])],
|
[AC_SUBST(AUDIT_LIBS, [-laudit])],
|
||||||
[AC_MSG_FAILURE([*** libaudit not usable.])])
|
[AC_MSG_FAILURE([*** libaudit not usable.])])
|
||||||
|
|
||||||
AC_CHECK_LIB([blkid], [blkid_get_cache],
|
|
||||||
[AC_SUBST(BLKID_LIBS, [-lblkid])],
|
|
||||||
[AC_MSG_FAILURE([*** libblkid not usable.])])
|
|
||||||
|
|
||||||
AC_CHECK_LIB([ext2fs], [ext2fs_initialize],
|
|
||||||
[AC_SUBST(EXT2FS_LIBS, [-lext2fs])],
|
|
||||||
[AC_MSG_FAILURE([*** libext2fs not usable.])])
|
|
||||||
|
|
||||||
AC_CHECK_LIB([iscsi], [libiscsi_get_firmware_network_config],
|
|
||||||
[AC_SUBST(ISCSI_LIBS, [-liscsi])],
|
|
||||||
[AC_MSG_FAILURE([*** libiscsi not usable.])])
|
|
||||||
|
|
||||||
AC_CHECK_LIB([z], [zlibVersion],
|
AC_CHECK_LIB([z], [zlibVersion],
|
||||||
[AC_SUBST(ZLIB_LIBS, [-lz])],
|
[AC_SUBST(ZLIB_LIBS, [-lz])],
|
||||||
[AC_MSG_FAILURE([*** libz not usable.])])
|
[AC_MSG_FAILURE([*** libz not usable.])])
|
||||||
@ -93,6 +107,7 @@ AC_TYPE_UINT16_T
|
|||||||
AC_TYPE_UINT32_T
|
AC_TYPE_UINT32_T
|
||||||
AC_TYPE_UINT64_T
|
AC_TYPE_UINT64_T
|
||||||
AC_TYPE_UINT8_T
|
AC_TYPE_UINT8_T
|
||||||
|
AC_TYPE_INT64_T
|
||||||
|
|
||||||
# Checks for library functions.
|
# Checks for library functions.
|
||||||
AC_FUNC_CHOWN
|
AC_FUNC_CHOWN
|
||||||
@ -111,7 +126,19 @@ AC_CHECK_FUNCS([dup2 fdatasync ftruncate getcwd gethostbyname gettimeofday \
|
|||||||
[AC_MSG_FAILURE([*** Required function $ac_func not found.])])
|
[AC_MSG_FAILURE([*** Required function $ac_func not found.])])
|
||||||
|
|
||||||
AM_PATH_PYTHON(python_required_version)
|
AM_PATH_PYTHON(python_required_version)
|
||||||
AM_CHECK_PYTHON_HEADERS(,[AC_MSG_ERROR(could not find Python headers or library)])
|
|
||||||
|
# Check for the python extension paths
|
||||||
|
PKG_CHECK_MODULES([PYTHON], [python], [
|
||||||
|
LIBS_save="$LIBS"
|
||||||
|
LIBS="$LIBS $PYTHON_LIBS"
|
||||||
|
AC_MSG_CHECKING([Python libraries])
|
||||||
|
AC_TRY_LINK_FUNC([Py_Initialize],
|
||||||
|
[AC_MSG_RESULT([yes])],
|
||||||
|
[AC_MSG_RESULT([no])
|
||||||
|
AC_MSG_FAILURE([*** Unable to use python library])])
|
||||||
|
LIBS="$LIBS_save"
|
||||||
|
],
|
||||||
|
[AC_MSG_FAILURE([*** Unable to find python library])])
|
||||||
|
|
||||||
# Check for libraries we need that provide pkg-config scripts
|
# Check for libraries we need that provide pkg-config scripts
|
||||||
PKG_PROG_PKG_CONFIG([0.23])
|
PKG_PROG_PKG_CONFIG([0.23])
|
||||||
@ -123,10 +150,8 @@ PKG_CHECK_MODULES([GDK], [gdk-3.0])
|
|||||||
PKG_CHECK_MODULES([NETWORKMANAGER], [NetworkManager >= 0.7.1])
|
PKG_CHECK_MODULES([NETWORKMANAGER], [NetworkManager >= 0.7.1])
|
||||||
PKG_CHECK_MODULES([LIBNL], [libnl-1 >= 1.0])
|
PKG_CHECK_MODULES([LIBNL], [libnl-1 >= 1.0])
|
||||||
PKG_CHECK_MODULES([LIBNM_GLIB], [libnm-glib >= 0.7.1 libnm-util >= 0.7.1])
|
PKG_CHECK_MODULES([LIBNM_GLIB], [libnm-glib >= 0.7.1 libnm-util >= 0.7.1])
|
||||||
PKG_CHECK_MODULES([DEVMAPPER], [devmapper >= 1.02.17])
|
PKG_CHECK_MODULES([RPM], [rpm >= 4.10.0])
|
||||||
PKG_CHECK_MODULES([LIBCURL], [libcurl >= 7.19.5])
|
PKG_CHECK_MODULES([LIBARCHIVE], [libarchive >= 3.0.4])
|
||||||
PKG_CHECK_MODULES([RPM], [rpm >= 4.8.0])
|
|
||||||
PKG_CHECK_MODULES([LIBARCHIVE], [libarchive >= 2.7.902a])
|
|
||||||
|
|
||||||
# Set $RPM_OPT_FLAGS if we don't have it
|
# Set $RPM_OPT_FLAGS if we don't have it
|
||||||
if test -z $RPM_OPT_FLAGS ; then
|
if test -z $RPM_OPT_FLAGS ; then
|
||||||
@ -135,32 +160,12 @@ else
|
|||||||
CFLAGS="$CFLAGS $RPM_OPT_FLAGS"
|
CFLAGS="$CFLAGS $RPM_OPT_FLAGS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# SELinux support can be enabled or disabled
|
|
||||||
AC_ARG_ENABLE(selinux,
|
|
||||||
AC_HELP_STRING([--enable-selinux],
|
|
||||||
[enable SELinux support (default is yes)]),
|
|
||||||
[selinux=$enableval],
|
|
||||||
[selinux=yes])
|
|
||||||
if test x$selinux = xyes ; then
|
|
||||||
AC_CHECK_LIB([selinux], [matchpathcon], [],
|
|
||||||
[AC_MSG_FAILURE([*** libselinux not usable.])])
|
|
||||||
AC_CHECK_LIB([selinux], [lsetfilecon], [],
|
|
||||||
[AC_MSG_FAILURE([*** libselinux not usable.])])
|
|
||||||
|
|
||||||
selinux_libs="-lselinux -laudit"
|
|
||||||
AC_SUBST(SELINUX_CFLAGS, [-DUSESELINUX=1])
|
|
||||||
AC_SUBST(SELINUX_LIBS, [$selinux_libs])
|
|
||||||
fi
|
|
||||||
|
|
||||||
# NFS support can, in theory, be enabled or disabled
|
# NFS support can, in theory, be enabled or disabled
|
||||||
AC_ARG_ENABLE(nfs,
|
AC_ARG_ENABLE(nfs,
|
||||||
AC_HELP_STRING([--enable-nfs],
|
AC_HELP_STRING([--enable-nfs],
|
||||||
[enable NFS support (default is yes)]),
|
[enable NFS support (default is yes)]),
|
||||||
[nfs=$enableval],
|
[nfs=$enableval],
|
||||||
[nfs=yes])
|
[nfs=yes])
|
||||||
if test x$selinux = xyes ; then
|
|
||||||
AC_SUBST(NFS_CFLAGS, [-DHAVE_NFS])
|
|
||||||
fi
|
|
||||||
|
|
||||||
# IPv6 support can be enabled or disabled
|
# IPv6 support can be enabled or disabled
|
||||||
AC_ARG_ENABLE(ipv6,
|
AC_ARG_ENABLE(ipv6,
|
||||||
@ -203,36 +208,15 @@ CFLAGS="`cflags_filter $CFLAGS`"
|
|||||||
LIBS=
|
LIBS=
|
||||||
|
|
||||||
# Get the release number from the spec file
|
# Get the release number from the spec file
|
||||||
rel="`awk '/Release:/ { split($2, r, "%"); print r[[1]] }' anaconda.spec.in`"
|
rel="`awk '/Release:/ { split($2, r, "%"); print r[[1]] }' $srcdir/anaconda.spec`"
|
||||||
AC_SUBST(PACKAGE_RELEASE, [$rel])
|
AC_SUBST(PACKAGE_RELEASE, [$rel])
|
||||||
|
|
||||||
# Set $(ARCH) and arch-related tests
|
# Perform arch related tests
|
||||||
s_arch="`uname -m | sed -e s/i.86/i386/ -e s/sparc.*/sparc/ -e s/ppc.*/ppc/`"
|
AC_CANONICAL_BUILD
|
||||||
AC_SUBST(ARCH, [$s_arch])
|
s_arch="`echo $build_cpu | sed -e s/i.86/i386/ -e s/powerpc.*/ppc/`"
|
||||||
|
|
||||||
AM_CONDITIONAL(IS_LIVEINST_ARCH,
|
AM_CONDITIONAL(IS_LIVEINST_ARCH,
|
||||||
[test x$s_arch == xppc || test x$s_arch == xi386 || test x$s_arch == xx86_64])
|
[test x$s_arch = xppc || test x$s_arch = xi386 || test x$s_arch = xx86_64])
|
||||||
|
|
||||||
AM_CONDITIONAL(IS_GPTSYNC_ARCH,
|
|
||||||
[test x$s_arch == xi386 || test x$s_arch == xx86_64])
|
|
||||||
|
|
||||||
AM_CONDITIONAL(IS_KEYMAPS_OVERRIDE_ARCH,
|
|
||||||
[test x$s_arch == xi386 || test x$s_arch == xppc || test x$s_arch == xx86_64])
|
|
||||||
|
|
||||||
AM_CONDITIONAL(IS_I386,
|
|
||||||
[test x$s_arch == xi386])
|
|
||||||
|
|
||||||
AM_CONDITIONAL(IS_PPC,
|
|
||||||
[test x$s_arch == xppc])
|
|
||||||
|
|
||||||
AM_CONDITIONAL(IS_S390,
|
|
||||||
[test x$s_arch == xs390 || test x$s_arch == xs390x])
|
|
||||||
|
|
||||||
AM_CONDITIONAL(IS_X86_64,
|
|
||||||
[test x$s_arch == xx86_64])
|
|
||||||
|
|
||||||
AM_CONDITIONAL(IS_SPARC,
|
|
||||||
[test x$s_arch == xsparc || test x$s_arch == xsparc64])
|
|
||||||
|
|
||||||
AC_CONFIG_SUBDIRS([widgets])
|
AC_CONFIG_SUBDIRS([widgets])
|
||||||
|
|
||||||
@ -267,14 +251,12 @@ AC_CONFIG_FILES([Makefile
|
|||||||
pyanaconda/Makefile
|
pyanaconda/Makefile
|
||||||
pyanaconda/isys/Makefile
|
pyanaconda/isys/Makefile
|
||||||
pyanaconda/packaging/Makefile
|
pyanaconda/packaging/Makefile
|
||||||
pyanaconda/storage/Makefile
|
|
||||||
pyanaconda/storage/devicelibs/Makefile
|
|
||||||
pyanaconda/storage/formats/Makefile
|
|
||||||
pyanaconda/ui/Makefile
|
pyanaconda/ui/Makefile
|
||||||
pyanaconda/ui/lib/Makefile
|
pyanaconda/ui/lib/Makefile
|
||||||
pyanaconda/ui/gui/categories/Makefile
|
pyanaconda/ui/gui/categories/Makefile
|
||||||
pyanaconda/ui/gui/hubs/Makefile
|
pyanaconda/ui/gui/hubs/Makefile
|
||||||
pyanaconda/ui/gui/spokes/Makefile
|
pyanaconda/ui/gui/spokes/Makefile
|
||||||
|
pyanaconda/ui/gui/spokes/advstorage/Makefile
|
||||||
pyanaconda/ui/gui/spokes/lib/Makefile
|
pyanaconda/ui/gui/spokes/lib/Makefile
|
||||||
pyanaconda/ui/gui/tools/Makefile
|
pyanaconda/ui/gui/tools/Makefile
|
||||||
pyanaconda/ui/gui/Makefile
|
pyanaconda/ui/gui/Makefile
|
||||||
@ -283,21 +265,8 @@ AC_CONFIG_FILES([Makefile
|
|||||||
pyanaconda/ui/tui/spokes/Makefile
|
pyanaconda/ui/tui/spokes/Makefile
|
||||||
pyanaconda/ui/tui/tools/Makefile
|
pyanaconda/ui/tui/tools/Makefile
|
||||||
pyanaconda/ui/tui/Makefile
|
pyanaconda/ui/tui/Makefile
|
||||||
tests/Makefile
|
|
||||||
tests/mock/Makefile
|
|
||||||
tests/kickstart_test/Makefile
|
|
||||||
tests/storage_test/Makefile
|
|
||||||
tests/storage_test/devicelibs_test/Makefile
|
|
||||||
tests/pylint/Makefile
|
|
||||||
tests/regex/Makefile
|
|
||||||
tests/pyanaconda_test/Makefile
|
|
||||||
tests/logpicker_test/Makefile
|
|
||||||
tests/logpicker_test/sending_test/Makefile
|
|
||||||
tests/logpicker_test/archiving_test/Makefile
|
|
||||||
tests/logpicker_test/logmining_test/Makefile
|
|
||||||
pyanaconda/textw/Makefile
|
|
||||||
data/post-scripts/Makefile
|
data/post-scripts/Makefile
|
||||||
|
tests/Makefile
|
||||||
utils/Makefile
|
utils/Makefile
|
||||||
utils/log_picker/Makefile
|
utils/dd/Makefile])
|
||||||
utils/log_picker/sending/Makefile])
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
@ -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"
|
|
||||||
|
|
@ -21,13 +21,8 @@ SUBDIRS = command-stubs icons liveinst pixmaps systemd post-scripts
|
|||||||
|
|
||||||
CLEANFILES = *~
|
CLEANFILES = *~
|
||||||
|
|
||||||
ksdir = $(datadir)/$(PACKAGE_NAME)
|
dist_pkgdata_DATA = interactive-defaults.ks \
|
||||||
dist_ks_DATA = interactive-defaults.ks
|
tmux.conf \
|
||||||
|
anaconda-gtk.css
|
||||||
udevdir = $(prefix)/lib/udev/rules.d
|
|
||||||
dist_udev_DATA = 70-anaconda.rules
|
|
||||||
|
|
||||||
tmuxdir = $(datadir)/$(PACKAGE_NAME)
|
|
||||||
dist_tmux_DATA = tmux.conf
|
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
111
anaconda/data/anaconda-gtk.css
Normal file
111
anaconda/data/anaconda-gtk.css
Normal 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;
|
||||||
|
}
|
@ -18,6 +18,6 @@
|
|||||||
# Author: David Cantrell <dcantrell@redhat.com>
|
# Author: David Cantrell <dcantrell@redhat.com>
|
||||||
|
|
||||||
commandstubsdir = $(datadir)/$(PACKAGE_NAME)
|
commandstubsdir = $(datadir)/$(PACKAGE_NAME)
|
||||||
dist_commandstubs_SCRIPTS = *-stub
|
dist_commandstubs_SCRIPTS = $(srcdir)/*-stub
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
# Kickstart defaults file for an interative install.
|
# Kickstart defaults file for an interative install.
|
||||||
# This is not loaded if a kickstart file is provided on the command line.
|
# This is not loaded if a kickstart file is provided on the command line.
|
||||||
auth --enableshadow --passalgo=sha512
|
auth --enableshadow --passalgo=sha512
|
||||||
bootloader --location=mbr
|
|
||||||
firstboot --enable
|
firstboot --enable
|
||||||
|
@ -35,12 +35,7 @@ CLEANFILES = liveinst.desktop *.h
|
|||||||
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
||||||
intltool_merge_verbose = $(intltool_merge_verbose_$(V))
|
@INTLTOOL_DESKTOP_RULE@
|
||||||
intltool_merge_verbose_ = $(intltool_merge_verbose_$(AM_DEFAULT_VERBOSITY))
|
|
||||||
intltool_merge_verbose_0 = @echo " MERGE "$@;
|
|
||||||
|
|
||||||
liveinst.desktop: liveinst.desktop.in
|
|
||||||
$(intltool_merge_verbose)LC_ALL=C intltool-merge -q -d -u $(top_srcdir)/po liveinst.desktop.in liveinst.desktop
|
|
||||||
|
|
||||||
install-exec-local:
|
install-exec-local:
|
||||||
mkdir -p $(DESTDIR)$(bindir)
|
mkdir -p $(DESTDIR)$(bindir)
|
||||||
|
@ -27,9 +27,4 @@ CLEANFILES = fedora-welcome.desktop
|
|||||||
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
||||||
intltool_merge_verbose = $(intltool_merge_verbose_$(V))
|
@INTLTOOL_DESKTOP_RULE@
|
||||||
intltool_merge_verbose_ = $(intltool_merge_verbose_$(AM_DEFAULT_VERBOSITY))
|
|
||||||
intltool_merge_verbose_0 = @echo " MERGE "$@;
|
|
||||||
|
|
||||||
fedora-welcome.desktop: fedora-welcome.desktop.in
|
|
||||||
$(intltool_merge_verbose)LC_ALL=C intltool-merge -q -d -u $(top_srcdir)/po fedora-welcome.desktop.in fedora-welcome.desktop
|
|
||||||
|
@ -18,10 +18,6 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
if [ -n "$DISPLAY" -a -n "$LANG" ]; then
|
|
||||||
INSTLANG="--lang $LANG"
|
|
||||||
fi
|
|
||||||
|
|
||||||
LIVE_INSTALL=0
|
LIVE_INSTALL=0
|
||||||
IMAGE_INSTALL=0
|
IMAGE_INSTALL=0
|
||||||
RESCUE=0
|
RESCUE=0
|
||||||
@ -43,7 +39,9 @@ fi
|
|||||||
|
|
||||||
# Try to sort out where the live device is
|
# Try to sort out where the live device is
|
||||||
if [ -z "$LIVE_BLOCK" ]; then
|
if [ -z "$LIVE_BLOCK" ]; then
|
||||||
if [ -b "/dev/mapper/live-osimg-min" ]; then
|
if [ -b "/dev/mapper/live-base" ]; then
|
||||||
|
LIVE_BLOCK="/dev/mapper/live-base"
|
||||||
|
elif [ -b "/dev/mapper/live-osimg-min" ]; then
|
||||||
LIVE_BLOCK="/dev/mapper/live-osimg-min"
|
LIVE_BLOCK="/dev/mapper/live-osimg-min"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -56,7 +54,7 @@ fi
|
|||||||
# Allow running another command in the place of anaconda, but in this same
|
# Allow running another command in the place of anaconda, but in this same
|
||||||
# environment. This allows storage testing to make use of all the module
|
# environment. This allows storage testing to make use of all the module
|
||||||
# loading and lvm control in this file, too.
|
# loading and lvm control in this file, too.
|
||||||
ANACONDA=${LIVECMD:=anaconda --liveinst --method=livecd://$LIVE_BLOCK $INSTLANG}
|
ANACONDA=${LIVECMD:=anaconda --liveinst --method=livecd://$LIVE_BLOCK}
|
||||||
|
|
||||||
# load modules that would get loaded by the initramfs (#230945)
|
# load modules that would get loaded by the initramfs (#230945)
|
||||||
for i in raid0 raid1 raid5 raid6 raid456 raid10 dm-mod dm-zero dm-mirror dm-snapshot dm-multipath dm-round-robin vfat dm-crypt cbc sha256 lrw xts iscsi_tcp iscsi_ibft; do /sbin/modprobe $i 2>/dev/null ; done
|
for i in raid0 raid1 raid5 raid6 raid456 raid10 dm-mod dm-zero dm-mirror dm-snapshot dm-multipath dm-round-robin vfat dm-crypt cbc sha256 lrw xts iscsi_tcp iscsi_ibft; do /sbin/modprobe $i 2>/dev/null ; done
|
||||||
@ -111,8 +109,6 @@ done
|
|||||||
# unmount anything that shouldn't be mounted prior to install
|
# unmount anything that shouldn't be mounted prior to install
|
||||||
anaconda-cleanup $ANACONDA $*
|
anaconda-cleanup $ANACONDA $*
|
||||||
|
|
||||||
/sbin/udevadm control --env=ANACONDA=1
|
|
||||||
|
|
||||||
# Set up the updates, if provided.
|
# Set up the updates, if provided.
|
||||||
if [ ! -z "$UPDATES" ]; then
|
if [ ! -z "$UPDATES" ]; then
|
||||||
if [ -e /tmp/updates.img -o -e /tmp/updates ]; then
|
if [ -e /tmp/updates.img -o -e /tmp/updates ]; then
|
||||||
|
@ -18,6 +18,6 @@
|
|||||||
# Author: David Cantrell <dcantrell@redhat.com>
|
# Author: David Cantrell <dcantrell@redhat.com>
|
||||||
|
|
||||||
pixmapsdir = $(datadir)/$(PACKAGE_NAME)/pixmaps
|
pixmapsdir = $(datadir)/$(PACKAGE_NAME)/pixmaps
|
||||||
dist_pixmaps_DATA = *.png
|
dist_pixmaps_DATA = $(srcdir)/*.png $(srcdir)/*.svg
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
136
anaconda/data/pixmaps/anaconda-selected-icon.svg
Normal file
136
anaconda/data/pixmaps/anaconda-selected-icon.svg
Normal 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 |
30
anaconda/data/pixmaps/dialog-warning-symbolic.svg
Normal file
30
anaconda/data/pixmaps/dialog-warning-symbolic.svg
Normal 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 |
@ -11,6 +11,7 @@ mkdir -p /mnt/sysimage/var/log/anaconda
|
|||||||
[ -e /tmp/ifcfg.log ] && cp /tmp/ifcfg.log $ANA_INSTALL_PATH/var/log/anaconda/anaconda.ifcfg.log
|
[ -e /tmp/ifcfg.log ] && cp /tmp/ifcfg.log $ANA_INSTALL_PATH/var/log/anaconda/anaconda.ifcfg.log
|
||||||
[ -e /tmp/yum.log ] && cp /tmp/yum.log $ANA_INSTALL_PATH/var/log/anaconda/anaconda.yum.log
|
[ -e /tmp/yum.log ] && cp /tmp/yum.log $ANA_INSTALL_PATH/var/log/anaconda/anaconda.yum.log
|
||||||
cp /tmp/ks-script*.log $ANA_INSTALL_PATH/var/log/anaconda/
|
cp /tmp/ks-script*.log $ANA_INSTALL_PATH/var/log/anaconda/
|
||||||
|
journalctl -b > $ANA_INSTALL_PATH/var/log/anaconda/anaconda.journal.log
|
||||||
chmod 0600 /mnt/sysimage/var/log/anaconda/*
|
chmod 0600 /mnt/sysimage/var/log/anaconda/*
|
||||||
|
|
||||||
%end
|
%end
|
||||||
|
@ -19,4 +19,4 @@
|
|||||||
|
|
||||||
postscriptsdir = $(datadir)/$(PACKAGE_NAME)/post-scripts
|
postscriptsdir = $(datadir)/$(PACKAGE_NAME)/post-scripts
|
||||||
dist_postscripts_DATA = 40-qubes-alt-kernels.ks 50-qubes.ks 80-setfilecons.ks 90-copy-screenshots.ks 99-copy-logs.ks
|
dist_postscripts_DATA = 40-qubes-alt-kernels.ks 50-qubes.ks 80-setfilecons.ks 90-copy-screenshots.ks 99-copy-logs.ks
|
||||||
MAINTAINERCLEAFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
@ -26,11 +26,8 @@ dist_systemd_DATA = anaconda.service \
|
|||||||
anaconda-tmux@.service \
|
anaconda-tmux@.service \
|
||||||
anaconda-shell@.service \
|
anaconda-shell@.service \
|
||||||
instperf.service \
|
instperf.service \
|
||||||
anaconda-sshd.service \
|
anaconda-sshd.service
|
||||||
anaconda-cleanup-initramfs.service
|
|
||||||
|
|
||||||
dist_generator_SCRIPTS = anaconda-generator
|
dist_generator_SCRIPTS = anaconda-generator
|
||||||
|
|
||||||
dist_sbin_SCRIPTS = anaconda-cleanup-initramfs
|
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
@ -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
|
|
@ -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
|
|
@ -3,8 +3,8 @@ WantedBy=anaconda.target
|
|||||||
|
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=the anaconda installation program
|
Description=the anaconda installation program
|
||||||
Wants=instperf.service rsyslog.service udev-settle.service NetworkManager.service
|
Wants=instperf.service rsyslog.service systemd-udev-settle.service NetworkManager.service
|
||||||
After=instperf.service rsyslog.service udev-settle.service NetworkManager.service anaconda-sshd.service
|
After=instperf.service rsyslog.service systemd-udev-settle.service NetworkManager.service anaconda-sshd.service
|
||||||
Requires=anaconda.service
|
Requires=anaconda.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
@ -3,9 +3,8 @@ Description=Anaconda System Services
|
|||||||
Requires=basic.target
|
Requires=basic.target
|
||||||
After=basic.target
|
After=basic.target
|
||||||
AllowIsolate=yes
|
AllowIsolate=yes
|
||||||
Wants=anaconda-cleanup-initramfs.service
|
|
||||||
Wants=instperf.service
|
Wants=instperf.service
|
||||||
Wants=rsyslog.service
|
Wants=rsyslog.service
|
||||||
Wants=udev-settle.service
|
Wants=systemd-udev-settle.service
|
||||||
Wants=NetworkManager.service
|
Wants=NetworkManager.service
|
||||||
Wants=plymouth-quit.service plymouth-quit-wait.service
|
Wants=plymouth-quit.service plymouth-quit-wait.service
|
||||||
|
@ -17,13 +17,10 @@
|
|||||||
#
|
#
|
||||||
# Author: David Cantrell <dcantrell@redhat.com>
|
# Author: David Cantrell <dcantrell@redhat.com>
|
||||||
|
|
||||||
EXTRA_DIST = install-methods.txt mediacheck.txt \
|
EXTRA_DIST = boot-options.txt mediacheck.txt \
|
||||||
lvm_sanity_checks.txt rescue-mode api.cfg making-screenshots \
|
lvm_sanity_checks.txt rescue-mode api.cfg making-screenshots \
|
||||||
threads.txt command-line.txt gettext.txt transifex.txt
|
threads.txt gettext.txt transifex.txt
|
||||||
|
|
||||||
CLEANFILES = api *.xml
|
CLEANFILES = api *.xml
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in command-line.txt
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
|
||||||
command-line.txt:
|
|
||||||
curl -4 -A "anaconda-build" -o command-line.txt "http://fedoraproject.org/w/index.php?title=Anaconda_Boot_Options&action=raw"
|
|
||||||
|
396
anaconda/docs/boot-options.txt
Normal file
396
anaconda/docs/boot-options.txt
Normal 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:
|
@ -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.
|
|
||||||
|
|
@ -70,13 +70,7 @@ THREAD NAMES
|
|||||||
PYGTK AND THREADS
|
PYGTK AND THREADS
|
||||||
|
|
||||||
GTK+ presents the biggest challenge for threads, but it's not
|
GTK+ presents the biggest challenge for threads, but it's not
|
||||||
impossible. We will be allowing GTK+ calls from any thread, so we
|
impossible. When you call gtk.main(), you need to call it like this:
|
||||||
have to call threads_init() in gui.py as the first thing:
|
|
||||||
|
|
||||||
gtk.gdk.threads_init()
|
|
||||||
|
|
||||||
After this, you can use Python threads as you normally would. When
|
|
||||||
you call gtk.main(), you need to call it like this:
|
|
||||||
|
|
||||||
gtk.threads_enter()
|
gtk.threads_enter()
|
||||||
gtk.main()
|
gtk.main()
|
||||||
|
@ -90,40 +90,40 @@ it to use.
|
|||||||
CREATING A NEW ANACONDA BRANCH
|
CREATING A NEW ANACONDA BRANCH
|
||||||
------------------------------
|
------------------------------
|
||||||
|
|
||||||
When we make a new branch, we need to branch the translation files. Do this
|
When we make a new branch, we need to branch the translation files.
|
||||||
with:
|
|
||||||
|
|
||||||
tx set --execute --auto-local -r anaconda.BRANCH_NAME -s en \
|
First you need to populate the project with the initial po files. I suggest
|
||||||
|
using the ones from the master branch, e.g.:
|
||||||
|
|
||||||
|
git checkout master
|
||||||
|
git clean -xdf
|
||||||
|
tx pull -a
|
||||||
|
# leave the *.po files in the po/ subdirectory
|
||||||
|
git checkout BRANCH_NAME
|
||||||
|
|
||||||
|
Next you need to update the transifex config with the new branch:
|
||||||
|
|
||||||
|
tx set --execute --auto-local -r anaconda.BRANCH_NAME -s en -t PO \
|
||||||
-f po/anaconda.pot "po/<lang>.po"
|
-f po/anaconda.pot "po/<lang>.po"
|
||||||
|
|
||||||
The last argument is correct as-is, it's not a place where you substitute
|
The last argument is correct as-is, it's not a place where you substitute
|
||||||
something for <lang>. The BRANCH_NAME will be something other than 'master'.
|
something for <lang>. The BRANCH_NAME will be something other than 'master'.
|
||||||
For example, when we branch for F-16:
|
For example, when we branch for F-20:
|
||||||
|
|
||||||
tx set --execute --auto-local -r anaconda.f16-branch -s en \
|
tx set --execute --auto-local -r anaconda.f20-branch -s en -t PO \
|
||||||
-f po/anaconda.pot "po/<lang>.po"
|
-f po/anaconda.pot "po/<lang>.po"
|
||||||
|
|
||||||
Check the .tx/config file on the branch to ensure it references the correct
|
Check the .tx/config file on the branch to ensure it references the correct
|
||||||
anaconda.BRANCH_NAME in Transifex and remove the [anaconda.master] block so
|
anaconda.BRANCH_NAME in Transifex and remove the [anaconda.master] block so
|
||||||
that it doesn't try to push to master and the new branch.
|
that it doesn't try to push to master and the new branch.
|
||||||
|
|
||||||
Once you have run "tx set", you need to populate the project with the initial
|
Now you can run:
|
||||||
po files. I suggest using the ones from the master branch, e.g.:
|
|
||||||
|
|
||||||
git checkout master
|
|
||||||
git clean -xdf
|
|
||||||
tx pull -a
|
|
||||||
# leave the *.po files in the po/ subdirectory
|
|
||||||
git checkout f18-branch
|
|
||||||
|
|
||||||
Log into transifex.net and select 'Add New Resource' for the Anaconda
|
|
||||||
project. Upload the po/anaconda.pot file as the Resource File, name it
|
|
||||||
f18-branch and select 'PO File(.po)' for the I18N Type. After the resource
|
|
||||||
is created you should then be able to push to it with:
|
|
||||||
|
|
||||||
tx push -s -t
|
tx push -s -t
|
||||||
|
|
||||||
This will push the po files and anaconda.pot from master to the f16-branch
|
This will push the po files and anaconda.pot from master to the BRANCH_NAME
|
||||||
resource for anaconda in Transifex. This is just an initial seed that the
|
resource for anaconda in Transifex. This is just an initial seed that the
|
||||||
translation team can work with. And since we branch from master, the code
|
translation team can work with. And since we branch from master, the code
|
||||||
should be more or less in sync with the po files at branch time.
|
should be more or less in sync with the po files at branch time.
|
||||||
|
|
||||||
|
Don't forget to commit the new .tx/config file to the branch.
|
||||||
|
@ -28,7 +28,6 @@ dist_dracut_SCRIPTS = module-setup.sh \
|
|||||||
repo-genrules.sh \
|
repo-genrules.sh \
|
||||||
kickstart-genrules.sh \
|
kickstart-genrules.sh \
|
||||||
updates-genrules.sh \
|
updates-genrules.sh \
|
||||||
anaconda-udevprop.sh \
|
|
||||||
anaconda-ks-sendheaders.sh \
|
anaconda-ks-sendheaders.sh \
|
||||||
anaconda-netroot.sh \
|
anaconda-netroot.sh \
|
||||||
anaconda-diskroot \
|
anaconda-diskroot \
|
||||||
@ -38,7 +37,16 @@ dist_dracut_SCRIPTS = module-setup.sh \
|
|||||||
fetch-kickstart-disk \
|
fetch-kickstart-disk \
|
||||||
fetch-updates-disk \
|
fetch-updates-disk \
|
||||||
parse-kickstart \
|
parse-kickstart \
|
||||||
anaconda-modprobe.sh
|
anaconda-modprobe.sh \
|
||||||
|
save-initramfs.sh \
|
||||||
|
anaconda-pre-shutdown.sh \
|
||||||
|
parse-anaconda-dd.sh \
|
||||||
|
fetch-driver-net.sh \
|
||||||
|
driver-updates@.service \
|
||||||
|
driver-updates-net@.service \
|
||||||
|
driver-updates.sh \
|
||||||
|
driver-updates-net.sh \
|
||||||
|
anaconda-depmod.sh \
|
||||||
|
driver-updates
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
||||||
|
51
anaconda/dracut/README-dd
Normal file
51
anaconda/dracut/README-dd
Normal 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.
|
@ -1,5 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# Copy over cmdline(.d) files from the initrd to /run before pivot
|
# Copy over cmdline(.d) files from the initrd to /run before pivot
|
||||||
mkdir -p /run/install/cmdline.d
|
mkdir -p /run/install/cmdline.d
|
||||||
cp /etc/cmdline.d/* /run/install/cmdline.d/
|
for f in /etc/cmdline.d/*; do
|
||||||
cp /etc/cmdline /run/install/
|
[ -e $f ] && cp $f /run/install/cmdline.d/
|
||||||
|
done
|
||||||
|
[ -e /etc/cmdline ] && cp /etc/cmdline /run/install/
|
||||||
|
5
anaconda/dracut/anaconda-depmod.sh
Normal file
5
anaconda/dracut/anaconda-depmod.sh
Normal 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
|
@ -15,10 +15,13 @@ run_checkisomd5() {
|
|||||||
if [ -n "$DRACUT_SYSTEMD" ]; then
|
if [ -n "$DRACUT_SYSTEMD" ]; then
|
||||||
p=$(str_replace "$livedev" "-" '\x2d')
|
p=$(str_replace "$livedev" "-" '\x2d')
|
||||||
systemctl start checkisomd5@${p}.service
|
systemctl start checkisomd5@${p}.service
|
||||||
|
status=$(systemctl -p ExecMainStatus show checkisomd5@${p}.service)
|
||||||
|
splitsep "=" "$status" ignore rc
|
||||||
else
|
else
|
||||||
checkisomd5 --verbose $livedev
|
checkisomd5 --verbose $livedev
|
||||||
|
rc=$?
|
||||||
fi
|
fi
|
||||||
if [ $? -ne 0 ]; then
|
if [ "$rc" == "1" ]; then
|
||||||
die "CD check failed!"
|
die "CD check failed!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
@ -43,6 +43,17 @@ find_runtime() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
find_tty() {
|
||||||
|
# find the real tty for /dev/console
|
||||||
|
local tty="console"
|
||||||
|
while [ -f /sys/class/tty/$tty/active ]; do
|
||||||
|
tty=$(< /sys/class/tty/$tty/active)
|
||||||
|
tty=${tty##* } # last item in the list
|
||||||
|
done
|
||||||
|
echo $tty
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
repodir="/run/install/repo"
|
repodir="/run/install/repo"
|
||||||
isodir="/run/install/isodir"
|
isodir="/run/install/isodir"
|
||||||
rulesfile="/etc/udev/rules.d/90-anaconda.rules"
|
rulesfile="/etc/udev/rules.d/90-anaconda.rules"
|
||||||
@ -95,13 +106,13 @@ anaconda_auto_updates() {
|
|||||||
unpack_updates_img $dir/updates.img /updates
|
unpack_updates_img $dir/updates.img /updates
|
||||||
fi
|
fi
|
||||||
if [ -e $dir/product.img ]; then
|
if [ -e $dir/product.img ]; then
|
||||||
unpack_updates_img $dir/product.img /updates/tmp/product
|
unpack_updates_img $dir/product.img /updates
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Unpack an image into the given dir.
|
# Unpack an image into the given dir.
|
||||||
unpack_updates_img() {
|
unpack_updates_img() {
|
||||||
local img="$1" tmpdir="/tmp/${1##*/}.$$" outdir="${2:+/updates}"
|
local img="$1" tmpdir="/tmp/${1##*/}.$$" outdir="${2:-/updates}"
|
||||||
# NOTE: unpack_img $img $outdir can clobber existing subdirs in $outdir,
|
# NOTE: unpack_img $img $outdir can clobber existing subdirs in $outdir,
|
||||||
# which is why we use a tmpdir and copytree (which doesn't clobber)
|
# which is why we use a tmpdir and copytree (which doesn't clobber)
|
||||||
unpack_img $img $tmpdir
|
unpack_img $img $tmpdir
|
||||||
@ -192,7 +203,7 @@ run_kickstart() {
|
|||||||
|
|
||||||
# replay udev events to trigger actions
|
# replay udev events to trigger actions
|
||||||
if [ "$do_disk" ]; then
|
if [ "$do_disk" ]; then
|
||||||
. $hookdir/pre-udev/*repo-genrules.sh
|
. $hookdir/pre-trigger/*repo-genrules.sh
|
||||||
udevadm control --reload
|
udevadm control --reload
|
||||||
udevadm trigger --action=change --subsystem-match=block
|
udevadm trigger --action=change --subsystem-match=block
|
||||||
fi
|
fi
|
||||||
|
0
anaconda/dracut/anaconda-modprobe.sh
Normal file → Executable file
0
anaconda/dracut/anaconda-modprobe.sh
Normal file → Executable file
@ -58,7 +58,7 @@ case $repo in
|
|||||||
updates=$(fetch_url $repo/images/updates.img)
|
updates=$(fetch_url $repo/images/updates.img)
|
||||||
[ -n "$updates" ] && unpack_updates_img $updates /updates
|
[ -n "$updates" ] && unpack_updates_img $updates /updates
|
||||||
product=$(fetch_url $repo/images/product.img)
|
product=$(fetch_url $repo/images/product.img)
|
||||||
[ -n "$product" ] && unpack_updates_img $product /updates/tmp/product
|
[ -n "$product" ] && unpack_updates_img $product /updates
|
||||||
/sbin/dmsquash-live-root $runtime
|
/sbin/dmsquash-live-root $runtime
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
21
anaconda/dracut/anaconda-pre-shutdown.sh
Normal file
21
anaconda/dracut/anaconda-pre-shutdown.sh
Normal 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
|
@ -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)
|
|
588
anaconda/dracut/driver-updates
Normal file
588
anaconda/dracut/driver-updates
Normal 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()
|
||||||
|
|
19
anaconda/dracut/driver-updates-net.sh
Normal file
19
anaconda/dracut/driver-updates-net.sh
Normal 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
|
17
anaconda/dracut/driver-updates-net@.service
Normal file
17
anaconda/dracut/driver-updates-net@.service
Normal 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
|
31
anaconda/dracut/driver-updates.sh
Normal file
31
anaconda/dracut/driver-updates.sh
Normal 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
|
||||||
|
|
17
anaconda/dracut/driver-updates@.service
Normal file
17
anaconda/dracut/driver-updates@.service
Normal 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
|
31
anaconda/dracut/fetch-driver-net.sh
Normal file
31
anaconda/dracut/fetch-driver-net.sh
Normal 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
|
@ -18,7 +18,7 @@ if [ -n "$mnt" ]; then
|
|||||||
else
|
else
|
||||||
tmpmnt="$(mkuniqdir /run/install tmpmnt)"
|
tmpmnt="$(mkuniqdir /run/install tmpmnt)"
|
||||||
if mount -o ro $dev $tmpmnt; then
|
if mount -o ro $dev $tmpmnt; then
|
||||||
cp $tmpmnt$path /tmp/ks.cfg
|
cp $tmpmnt/$path /tmp/ks.cfg
|
||||||
umount $tmpmnt
|
umount $tmpmnt
|
||||||
rmdir $tmpmnt
|
rmdir $tmpmnt
|
||||||
fi
|
fi
|
||||||
|
@ -36,13 +36,14 @@ if [ "$kickstart" = "nfs:auto" ]; then
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
} < /tmp/net.$netif.lease
|
} < /tmp/net.$netif.lease
|
||||||
# filename is appended with '$IP_ADDR-kickstart' if ending in '/'
|
|
||||||
if [ "${filename%/}" != "$filename" ]; then
|
|
||||||
filename="${filename}${new_ip_address}-kickstart"
|
|
||||||
fi
|
|
||||||
kickstart="nfs:$server:$filename"
|
kickstart="nfs:$server:$filename"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# kickstart is appended with '$IP_ADDR-kickstart' if ending in '/'
|
||||||
|
if [ "${kickstart%/}" != "$kickstart" ]; then
|
||||||
|
kickstart="${kickstart}${new_ip_address}-kickstart"
|
||||||
|
fi
|
||||||
|
|
||||||
info "anaconda fetching kickstart from $kickstart"
|
info "anaconda fetching kickstart from $kickstart"
|
||||||
if fetch_url "$kickstart" /tmp/ks.cfg; then
|
if fetch_url "$kickstart" /tmp/ks.cfg; then
|
||||||
parse_kickstart /tmp/ks.cfg
|
parse_kickstart /tmp/ks.cfg
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# generate udev rules for fetching kickstarts.
|
# generate udev rules for fetching kickstarts.
|
||||||
|
|
||||||
|
. /lib/anaconda-lib.sh
|
||||||
|
|
||||||
case "${kickstart%%:*}" in
|
case "${kickstart%%:*}" in
|
||||||
http|https|ftp|nfs)
|
http|https|ftp|nfs)
|
||||||
# handled by fetch-kickstart-net in the online hook
|
# handled by fetch-kickstart-net in the online hook
|
||||||
|
@ -15,6 +15,12 @@ depends() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
install() {
|
install() {
|
||||||
|
# binaries we want in initramfs
|
||||||
|
dracut_install eject -o pigz
|
||||||
|
dracut_install depmod blkid
|
||||||
|
inst_binary /usr/libexec/anaconda/dd_list /bin/dd_list
|
||||||
|
inst_binary /usr/libexec/anaconda/dd_extract /bin/dd_extract
|
||||||
|
|
||||||
# anaconda
|
# anaconda
|
||||||
inst "$moddir/anaconda-lib.sh" "/lib/anaconda-lib.sh"
|
inst "$moddir/anaconda-lib.sh" "/lib/anaconda-lib.sh"
|
||||||
inst_hook cmdline 25 "$moddir/parse-anaconda-options.sh"
|
inst_hook cmdline 25 "$moddir/parse-anaconda-options.sh"
|
||||||
@ -22,22 +28,32 @@ install() {
|
|||||||
inst_hook cmdline 27 "$moddir/parse-anaconda-repo.sh"
|
inst_hook cmdline 27 "$moddir/parse-anaconda-repo.sh"
|
||||||
inst_hook cmdline 28 "$moddir/parse-anaconda-net.sh"
|
inst_hook cmdline 28 "$moddir/parse-anaconda-net.sh"
|
||||||
inst_hook pre-udev 30 "$moddir/anaconda-modprobe.sh"
|
inst_hook pre-udev 30 "$moddir/anaconda-modprobe.sh"
|
||||||
inst_hook pre-udev 40 "$moddir/repo-genrules.sh"
|
inst_hook pre-trigger 50 "$moddir/repo-genrules.sh"
|
||||||
inst_hook pre-udev 40 "$moddir/kickstart-genrules.sh"
|
inst_hook pre-trigger 50 "$moddir/kickstart-genrules.sh"
|
||||||
inst_hook pre-udev 40 "$moddir/updates-genrules.sh"
|
inst_hook pre-trigger 50 "$moddir/updates-genrules.sh"
|
||||||
inst_hook pre-trigger 40 "$moddir/anaconda-udevprop.sh"
|
|
||||||
inst_hook initqueue/settled 00 "$moddir/anaconda-ks-sendheaders.sh"
|
inst_hook initqueue/settled 00 "$moddir/anaconda-ks-sendheaders.sh"
|
||||||
inst_hook initqueue/online 80 "$moddir/anaconda-netroot.sh"
|
inst_hook initqueue/online 80 "$moddir/anaconda-netroot.sh"
|
||||||
inst "$moddir/anaconda-diskroot" "/sbin/anaconda-diskroot"
|
inst "$moddir/anaconda-diskroot" "/sbin/anaconda-diskroot"
|
||||||
inst_hook pre-pivot 99 "$moddir/anaconda-copy-ks.sh"
|
inst_hook pre-pivot 50 "$moddir/anaconda-copy-ks.sh"
|
||||||
inst_hook pre-pivot 99 "$moddir/anaconda-copy-cmdline.sh"
|
inst_hook pre-pivot 50 "$moddir/anaconda-copy-cmdline.sh"
|
||||||
|
inst_hook pre-pivot 99 "$moddir/save-initramfs.sh"
|
||||||
|
inst_hook pre-shutdown 50 "$moddir/anaconda-pre-shutdown.sh"
|
||||||
# kickstart parsing, WOOOO
|
# kickstart parsing, WOOOO
|
||||||
inst_hook initqueue/online 10 "$moddir/fetch-kickstart-net.sh"
|
inst_hook initqueue/online 11 "$moddir/fetch-kickstart-net.sh"
|
||||||
inst "$moddir/fetch-kickstart-disk" "/sbin/fetch-kickstart-disk"
|
inst "$moddir/fetch-kickstart-disk" "/sbin/fetch-kickstart-disk"
|
||||||
inst "$moddir/fetch-updates-disk" "/sbin/fetch-updates-disk"
|
inst "$moddir/fetch-updates-disk" "/sbin/fetch-updates-disk"
|
||||||
inst "$moddir/parse-kickstart" "/sbin/parse-kickstart"
|
inst "$moddir/parse-kickstart" "/sbin/parse-kickstart"
|
||||||
|
# Driver Update Disks
|
||||||
|
inst_hook cmdline 29 "$moddir/parse-anaconda-dd.sh"
|
||||||
|
inst_hook initqueue/online 10 "$moddir/fetch-driver-net.sh"
|
||||||
|
inst_hook pre-trigger 40 "$moddir/driver-updates.sh"
|
||||||
|
inst_hook pre-pivot 10 "$moddir/driver-updates-net.sh"
|
||||||
|
inst_hook pre-pivot 50 "$moddir/anaconda-depmod.sh"
|
||||||
|
inst "$moddir/driver-updates" "/bin/driver-updates"
|
||||||
|
inst_simple "$moddir/driver-updates@.service" "/etc/systemd/system/driver-updates@.service"
|
||||||
|
inst_simple "$moddir/driver-updates-net@.service" "/etc/systemd/system/driver-updates-net@.service"
|
||||||
# python deps for parse-kickstart. DOUBLE WOOOO
|
# python deps for parse-kickstart. DOUBLE WOOOO
|
||||||
$moddir/python-deps $moddir/parse-kickstart | while read dep; do
|
$moddir/python-deps $moddir/parse-kickstart $moddir/driver-updates | while read dep; do
|
||||||
case "$dep" in
|
case "$dep" in
|
||||||
*.so) inst_library $dep ;;
|
*.so) inst_library $dep ;;
|
||||||
*.py) inst_simple $dep ;;
|
*.py) inst_simple $dep ;;
|
||||||
|
19
anaconda/dracut/parse-anaconda-dd.sh
Normal file
19
anaconda/dracut/parse-anaconda-dd.sh
Normal 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
|
@ -5,6 +5,15 @@ net_conf=/etc/cmdline.d/75-anaconda-network-options.conf
|
|||||||
|
|
||||||
check_depr_arg "dns" "nameserver=%s"
|
check_depr_arg "dns" "nameserver=%s"
|
||||||
|
|
||||||
|
mac_to_bootif() {
|
||||||
|
local bootif=${1}
|
||||||
|
local IFS=':'
|
||||||
|
bootif=$(for i in ${bootif} ; do echo -n $i-; done)
|
||||||
|
bootif=${bootif%-}
|
||||||
|
bootif="01-$bootif"
|
||||||
|
echo $bootif
|
||||||
|
}
|
||||||
|
|
||||||
# handle ksdevice (tell us which device to use for ip= stuff later)
|
# handle ksdevice (tell us which device to use for ip= stuff later)
|
||||||
export ksdevice=""
|
export ksdevice=""
|
||||||
ksdev_val=$(getarg ksdevice=)
|
ksdev_val=$(getarg ksdevice=)
|
||||||
@ -16,15 +25,20 @@ if [ -n "$ksdev_val" ]; then
|
|||||||
ibft)
|
ibft)
|
||||||
warn "'ksdevice=ibft' is deprecated. Using 'ip=ibft' instead."
|
warn "'ksdevice=ibft' is deprecated. Using 'ip=ibft' instead."
|
||||||
echo "ip=ibft" > $net_conf
|
echo "ip=ibft" > $net_conf
|
||||||
ksdevice="ibft0"
|
|
||||||
;;
|
;;
|
||||||
bootif)
|
bootif)
|
||||||
warn "'ksdevice=bootif' does nothing (BOOTIF is used by default if present)"
|
warn "'ksdevice=bootif' does nothing (BOOTIF is used by default if present)"
|
||||||
;;
|
;;
|
||||||
??:??:??:??:??:??)
|
??:??:??:??:??:??)
|
||||||
warn "'ksdevice=<MAC>' is deprecated. Using 'ifname=ksdev0:<MAC>' instead."
|
|
||||||
ksdevice="ksdev0"
|
BOOTIF=$(getarg 'BOOTIF=')
|
||||||
echo "ifname=$ksdevice:$ksdev_val" > $net_conf
|
if [ -n "$BOOTIF" ] ; then
|
||||||
|
warn "'ksdevice=<MAC>' is deprecated. Supplied BOOTIF takes precedence."
|
||||||
|
else
|
||||||
|
bootif=$(mac_to_bootif "$ksdev_val")
|
||||||
|
warn "'ksdevice=<MAC>' is deprecated. Using BOOTIF=$bootif instead."
|
||||||
|
echo "BOOTIF=$bootif" > $net_conf
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
*) ksdevice="$ksdev_val" ;;
|
*) ksdevice="$ksdev_val" ;;
|
||||||
esac
|
esac
|
||||||
|
@ -86,7 +86,6 @@ check_removed_arg ethtool
|
|||||||
|
|
||||||
# interactive junk in initramfs
|
# interactive junk in initramfs
|
||||||
# (maybe we'll bring it back someday?)
|
# (maybe we'll bring it back someday?)
|
||||||
check_removed_arg askmethod "Use an appropriate 'inst.repo=' argument instead."
|
|
||||||
check_removed_arg asknetwork "Use an appropriate 'ip=' argument instead."
|
check_removed_arg asknetwork "Use an appropriate 'ip=' argument instead."
|
||||||
|
|
||||||
# lang & keymap
|
# lang & keymap
|
||||||
@ -125,8 +124,14 @@ if updates=$(getarg updates inst.updates); then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# for vnc bring network up in initramfs so that cmdline configuration is used
|
||||||
|
getargbool 0 vnc inst.vnc && warn "anaconda requiring network for vnc" && set_neednet
|
||||||
|
|
||||||
# make sure we get ifcfg for every interface that comes up
|
# make sure we get ifcfg for every interface that comes up
|
||||||
echo 'save_netinfo $netif' > $hookdir/initqueue/online/anaconda-ifcfg.sh
|
echo 'save_netinfo $netif' > $hookdir/initqueue/online/anaconda-ifcfg.sh
|
||||||
|
|
||||||
|
# Driver Update Disk
|
||||||
|
warn_renamed_arg "dd" "inst.dd"
|
||||||
|
|
||||||
# re-read the commandline args
|
# re-read the commandline args
|
||||||
unset CMDLINE
|
unset CMDLINE
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
|
|
||||||
import sys, os
|
import sys, os
|
||||||
import logging
|
import logging
|
||||||
|
import shutil
|
||||||
|
import uuid
|
||||||
from pykickstart.parser import KickstartParser, preprocessKickstart
|
from pykickstart.parser import KickstartParser, preprocessKickstart
|
||||||
from pykickstart.version import returnClassForVersion
|
from pykickstart.version import returnClassForVersion
|
||||||
from pykickstart.errors import KickstartError
|
from pykickstart.errors import KickstartError
|
||||||
@ -50,25 +52,30 @@ proc_cmdline = read_cmdline("/proc/cmdline")
|
|||||||
|
|
||||||
# Here are the kickstart commands we care about:
|
# Here are the kickstart commands we care about:
|
||||||
|
|
||||||
class Method(commands.method.F14_Method):
|
class Cdrom(commands.cdrom.FC3_Cdrom):
|
||||||
'''install methods: cdrom, harddrive, nfs, url'''
|
|
||||||
def dracut_args(self, args, lineno, obj):
|
def dracut_args(self, args, lineno, obj):
|
||||||
if self.method == "cdrom":
|
return "inst.repo=cdrom"
|
||||||
method="cdrom"
|
|
||||||
elif self.method == "harddrive":
|
class HardDrive(commands.harddrive.FC3_HardDrive):
|
||||||
if self.biospart:
|
def dracut_args(self, args, lineno, obj):
|
||||||
method="bd:%s:%s" % (self.partition, self.dir)
|
if self.biospart:
|
||||||
else:
|
return "inst.repo=bd:%s:%s" % (self.partition, self.dir)
|
||||||
method="hd:%s:%s" % (self.partition, self.dir)
|
else:
|
||||||
elif self.method == "nfs":
|
return "inst.repo=hd:%s:%s" % (self.partition, self.dir)
|
||||||
method="nfs:%s:%s" % (self.server, self.dir)
|
|
||||||
if self.opts:
|
class NFS(commands.nfs.FC6_NFS):
|
||||||
method += ":%s" % self.opts
|
def dracut_args(self, args, lineno, obj):
|
||||||
elif self.method == "url":
|
method="nfs:%s:%s" % (self.server, self.dir)
|
||||||
# FIXME: self.proxy, self.noverifyssl
|
if self.opts:
|
||||||
method = self.url
|
method += ":%s" % self.opts
|
||||||
|
|
||||||
return "inst.repo=%s" % method
|
return "inst.repo=%s" % method
|
||||||
|
|
||||||
|
class URL(commands.url.F18_Url):
|
||||||
|
def dracut_args(self, args, lineno, obj):
|
||||||
|
# FIXME: self.proxy, self.noverifyssl
|
||||||
|
return "inst.repo=%s" % self.url
|
||||||
|
|
||||||
class Updates(commands.updates.F7_Updates):
|
class Updates(commands.updates.F7_Updates):
|
||||||
def dracut_args(self, args, lineno, obj):
|
def dracut_args(self, args, lineno, obj):
|
||||||
if self.url == "floppy":
|
if self.url == "floppy":
|
||||||
@ -91,7 +98,7 @@ class DriverDisk(commands.driverdisk.F14_DriverDisk):
|
|||||||
if location:
|
if location:
|
||||||
return "inst.driverdisk=%s" % location
|
return "inst.driverdisk=%s" % location
|
||||||
|
|
||||||
class Network(commands.network.F16_Network):
|
class Network(commands.network.F20_Network):
|
||||||
def dracut_args(self, args, lineno, net):
|
def dracut_args(self, args, lineno, net):
|
||||||
'''
|
'''
|
||||||
NOTE: The first 'network' line get special treatment:
|
NOTE: The first 'network' line get special treatment:
|
||||||
@ -138,13 +145,18 @@ class DisplayMode(commands.displaymode.FC3_DisplayMode):
|
|||||||
elif self.displayMode == DISPLAY_MODE_GRAPHICAL:
|
elif self.displayMode == DISPLAY_MODE_GRAPHICAL:
|
||||||
return "inst.graphical"
|
return "inst.graphical"
|
||||||
|
|
||||||
# TODO: keymap, lang... device? upgrade? selinux?
|
class Bootloader(commands.bootloader.F19_Bootloader):
|
||||||
|
def dracut_args(self, args, lineno, obj):
|
||||||
|
if self.extlinux:
|
||||||
|
return "extlinux"
|
||||||
|
|
||||||
|
# TODO: keymap, lang... device? selinux?
|
||||||
|
|
||||||
dracutCmds = {
|
dracutCmds = {
|
||||||
'cdrom': Method,
|
'cdrom': Cdrom,
|
||||||
'harddrive': Method,
|
'harddrive': HardDrive,
|
||||||
'nfs': Method,
|
'nfs': NFS,
|
||||||
'url': Method,
|
'url': URL,
|
||||||
'updates': Updates,
|
'updates': Updates,
|
||||||
'mediacheck': MediaCheck,
|
'mediacheck': MediaCheck,
|
||||||
'driverdisk': DriverDisk,
|
'driverdisk': DriverDisk,
|
||||||
@ -152,6 +164,7 @@ dracutCmds = {
|
|||||||
'cmdline': DisplayMode,
|
'cmdline': DisplayMode,
|
||||||
'graphical': DisplayMode,
|
'graphical': DisplayMode,
|
||||||
'text': DisplayMode,
|
'text': DisplayMode,
|
||||||
|
'bootloader': Bootloader,
|
||||||
}
|
}
|
||||||
handlerclass = returnClassForVersion()
|
handlerclass = returnClassForVersion()
|
||||||
class DracutHandler(handlerclass):
|
class DracutHandler(handlerclass):
|
||||||
@ -190,6 +203,7 @@ def ksnet_to_dracut(args, lineno, net, bootdev=False):
|
|||||||
'''Translate the kickstart network data into dracut network data.'''
|
'''Translate the kickstart network data into dracut network data.'''
|
||||||
line = []
|
line = []
|
||||||
ip=""
|
ip=""
|
||||||
|
autoconf=""
|
||||||
|
|
||||||
if is_mac(net.device): # this is a MAC - find the interface name
|
if is_mac(net.device): # this is a MAC - find the interface name
|
||||||
mac = net.device
|
mac = net.device
|
||||||
@ -200,9 +214,9 @@ def ksnet_to_dracut(args, lineno, net, bootdev=False):
|
|||||||
|
|
||||||
# NOTE: dracut currently only does ipv4 *or* ipv6, so only one ip=arg..
|
# NOTE: dracut currently only does ipv4 *or* ipv6, so only one ip=arg..
|
||||||
if net.bootProto in (BOOTPROTO_DHCP, BOOTPROTO_BOOTP):
|
if net.bootProto in (BOOTPROTO_DHCP, BOOTPROTO_BOOTP):
|
||||||
ip="dhcp"
|
autoconf="dhcp"
|
||||||
elif net.bootProto == BOOTPROTO_IBFT:
|
elif net.bootProto == BOOTPROTO_IBFT:
|
||||||
ip="ibft"
|
autoconf="ibft"
|
||||||
elif net.bootProto == BOOTPROTO_QUERY:
|
elif net.bootProto == BOOTPROTO_QUERY:
|
||||||
log.error("'%s': --bootproto=query is deprecated", " ".join(args))
|
log.error("'%s': --bootproto=query is deprecated", " ".join(args))
|
||||||
elif net.bootProto == BOOTPROTO_STATIC:
|
elif net.bootProto == BOOTPROTO_STATIC:
|
||||||
@ -212,18 +226,22 @@ def ksnet_to_dracut(args, lineno, net, bootdev=False):
|
|||||||
log.warn("line %u: network missing %s", lineno, missing)
|
log.warn("line %u: network missing %s", lineno, missing)
|
||||||
else:
|
else:
|
||||||
ip="{0.ip}::{0.gateway}:{0.netmask}:" \
|
ip="{0.ip}::{0.gateway}:{0.netmask}:" \
|
||||||
"{0.hostname}:{0.device}:none".format(net)
|
"{0.hostname}:{0.device}:none:{0.mtu}".format(net)
|
||||||
elif net.ipv6 == "auto":
|
elif net.ipv6 == "auto":
|
||||||
ip="auto6"
|
autoconf="auto6"
|
||||||
elif net.ipv6 == "dhcp":
|
elif net.ipv6 == "dhcp":
|
||||||
ip="dhcp6"
|
autoconf="dhcp6"
|
||||||
elif net.ipv6:
|
elif net.ipv6:
|
||||||
ip="[{0.ipv6}]::{0.gateway}:{0.netmask}:" \
|
ip="[{0.ipv6}]::{0.ipv6gateway}:{0.netmask}:" \
|
||||||
"{0.hostname}:{0.device}:none".format(net)
|
"{0.hostname}:{0.device}:none:{0.mtu}".format(net)
|
||||||
|
|
||||||
if net.device and not ip.endswith(":none"):
|
if autoconf:
|
||||||
line.append("ip=%s:%s" % (net.device, ip))
|
if net.device or net.mtu:
|
||||||
else:
|
ip="%s:%s:%s" % (net.device, autoconf, net.mtu)
|
||||||
|
else:
|
||||||
|
ip=autoconf
|
||||||
|
|
||||||
|
if ip:
|
||||||
line.append("ip=%s" % ip)
|
line.append("ip=%s" % ip)
|
||||||
|
|
||||||
for ns in net.nameserver.split(","):
|
for ns in net.nameserver.split(","):
|
||||||
@ -257,7 +275,8 @@ def ksnet_to_ifcfg(net, filename=None):
|
|||||||
dev = find_devname(dev)
|
dev = find_devname(dev)
|
||||||
if not dev:
|
if not dev:
|
||||||
return
|
return
|
||||||
if not os.path.isdir("/sys/class/net/%s" % dev):
|
if (not os.path.isdir("/sys/class/net/%s" % dev)
|
||||||
|
and not net.bondslaves and not net.teamslaves):
|
||||||
log.info("can't find device %s" % dev)
|
log.info("can't find device %s" % dev)
|
||||||
return
|
return
|
||||||
ifcfg = dict()
|
ifcfg = dict()
|
||||||
@ -267,7 +286,7 @@ def ksnet_to_ifcfg(net, filename=None):
|
|||||||
os.makedirs("/tmp/ifcfg")
|
os.makedirs("/tmp/ifcfg")
|
||||||
ifcfg['DEVICE'] = dev
|
ifcfg['DEVICE'] = dev
|
||||||
ifcfg['HWADDR'] = readsysfile("/sys/class/net/%s/address" % dev)
|
ifcfg['HWADDR'] = readsysfile("/sys/class/net/%s/address" % dev)
|
||||||
ifcfg['UUID'] = readsysfile("/proc/sys/kernel/random/uuid")
|
ifcfg['UUID'] = str(uuid.uuid4())
|
||||||
# we set real ONBOOT value in anaconda, here
|
# we set real ONBOOT value in anaconda, here
|
||||||
# we use it to activate devcies by NM on start
|
# we use it to activate devcies by NM on start
|
||||||
ifcfg['ONBOOT'] = "yes" if net.activate else "no"
|
ifcfg['ONBOOT'] = "yes" if net.activate else "no"
|
||||||
@ -285,42 +304,126 @@ def ksnet_to_ifcfg(net, filename=None):
|
|||||||
# ipv6 settings
|
# ipv6 settings
|
||||||
if net.noipv6:
|
if net.noipv6:
|
||||||
ifcfg['IPV6INIT'] = "no"
|
ifcfg['IPV6INIT'] = "no"
|
||||||
elif net.ipv6:
|
else:
|
||||||
ifcfg['IPV6INIT'] = "yes"
|
ifcfg['IPV6INIT'] = "yes"
|
||||||
|
|
||||||
if net.ipv6 == 'dhcp':
|
if net.ipv6 == 'dhcp':
|
||||||
ifcfg['DHCPV6C'] = "yes"
|
ifcfg['DHCPV6C'] = "yes"
|
||||||
elif net.ipv6 == 'auto':
|
ifcfg['IPV6_AUTOCONF'] = "no"
|
||||||
ifcfg['IPV6_AUTOCONF'] = "yes" # NOTE: redundant (this is the default)
|
if net.ipv6gateway:
|
||||||
elif ':' in net.ipv6:
|
ifcfg['IPV6_DEFAULTGW'] = net.ipv6gateway
|
||||||
ifcfg['IPV6ADDR'] = net.ipv6
|
elif net.ipv6 == 'auto':
|
||||||
|
ifcfg['IPV6_AUTOCONF'] = "yes" # NOTE: redundant (this is the default)
|
||||||
|
elif ':' in net.ipv6:
|
||||||
|
ifcfg['IPV6ADDR'] = net.ipv6
|
||||||
|
ifcfg['IPV6_AUTOCONF'] = "no"
|
||||||
|
|
||||||
# misc stuff
|
# misc stuff
|
||||||
if net.mtu:
|
if net.mtu:
|
||||||
ifcfg['MTU'] = net.mtu
|
ifcfg['MTU'] = net.mtu
|
||||||
if net.nameserver:
|
if net.nameserver:
|
||||||
ifcfg['DNS1'] = net.nameserver
|
for i, ip in enumerate(net.nameserver.split(",")):
|
||||||
|
ifcfg["DNS%d" % (i+1)] = ip
|
||||||
if net.nodefroute:
|
if net.nodefroute:
|
||||||
ifcfg['DEFROUTE'] = "no"
|
ifcfg['DEFROUTE'] = "no"
|
||||||
|
|
||||||
# TODO: dhcpclass, ethtool, essid/wepkey/wpakay, etc.
|
# TODO: dhcpclass, ethtool, essid/wepkey/wpakay, etc.
|
||||||
|
|
||||||
try:
|
if net.bootProto == 'dhcp':
|
||||||
log.info("writing ifcfg for %s", dev)
|
srcpath = "/tmp/dhclient.%s.lease" % dev
|
||||||
outf = open(filename, "w")
|
dstdir = "/tmp/ifcfg-leases"
|
||||||
outf.write('# Generated by parse-kickstart\n')
|
dstpath = "%s/dhclient-%s-%s.lease" % (dstdir, ifcfg['UUID'], dev)
|
||||||
for k,v in ifcfg.items():
|
if os.path.exists(srcpath):
|
||||||
outf.write("%s=%s\n" % (k,v))
|
if not os.path.isdir(dstdir):
|
||||||
outf.close()
|
os.makedirs(dstdir)
|
||||||
except IOError as e:
|
shutil.copyfile(srcpath, dstpath)
|
||||||
log.error("can't write %s: %s" % (filename, str(e)))
|
|
||||||
else:
|
if net.bondslaves:
|
||||||
|
ifcfg.pop('HWADDR')
|
||||||
|
ifcfg['TYPE'] = "Bond"
|
||||||
|
ifcfg['BONDING_MASTER'] = "yes"
|
||||||
|
ifcfg['NAME'] = "Bond connection %s" % dev
|
||||||
|
if ';' in net.bondopts:
|
||||||
|
sep = ";"
|
||||||
|
else:
|
||||||
|
sep = ","
|
||||||
|
ifcfg['BONDING_OPTS'] = '"' + " ".join(net.bondopts.split(sep)) + '"'
|
||||||
|
|
||||||
|
for i, slave in enumerate(net.bondslaves.split(","), 1):
|
||||||
|
slave_ifcfg = {
|
||||||
|
'TYPE' : "Ethernet",
|
||||||
|
'NAME' : "%s slave %s" % (dev, i),
|
||||||
|
'UUID' : str(uuid.uuid4()),
|
||||||
|
'ONBOOT' : "yes",
|
||||||
|
'MASTER' : dev,
|
||||||
|
'HWADDR' : readsysfile("/sys/class/net/%s/address" % slave),
|
||||||
|
}
|
||||||
|
# not using NM naming conventions, following dracut so that it does not
|
||||||
|
# override kickstart config by generating its own ifcfg files for slaves
|
||||||
|
#slave_filename = "/tmp/ifcfg/ifcfg-%s" % "_".join(slave_ifcfg['NAME'].split(" "))
|
||||||
|
# FIXME - change in dracut?
|
||||||
|
slave_filename = "/tmp/ifcfg/ifcfg-%s" % slave
|
||||||
|
log.info("writing ifcfg %s for slave %s of bond %s" % (slave_filename, slave, dev))
|
||||||
|
write_ifcfg(slave_filename, slave_ifcfg)
|
||||||
|
|
||||||
|
if net.teamslaves:
|
||||||
|
|
||||||
|
ifcfg.pop('HWADDR')
|
||||||
|
ifcfg['TYPE'] = "Team"
|
||||||
|
ifcfg['NAME'] = "Team connection %s" % dev
|
||||||
|
ifcfg['TEAM_CONFIG'] = "'" + net.teamconfig + "'"
|
||||||
|
|
||||||
|
for i, (slave, cfg) in enumerate(net.teamslaves):
|
||||||
|
slave_ifcfg = {
|
||||||
|
'DEVICE': slave,
|
||||||
|
'DEVICETYPE' : "TeamPort",
|
||||||
|
'NAME' : "%s slave %s" % (dev, i),
|
||||||
|
'UUID' : str(uuid.uuid4()),
|
||||||
|
'ONBOOT' : "yes",
|
||||||
|
'TEAM_MASTER' : dev,
|
||||||
|
# 'HWADDR' : readsysfile("/sys/class/net/%s/address" % slave),
|
||||||
|
}
|
||||||
|
if cfg:
|
||||||
|
slave_ifcfg['TEAM_PORT_CONFIG'] = "'" + cfg + "'"
|
||||||
|
|
||||||
|
# not using NM naming conventions, following dracut so that it does not
|
||||||
|
# override kickstart config by generating its own ifcfg files for slaves
|
||||||
|
#slave_filename = "/tmp/ifcfg/ifcfg-%s" % "_".join(slave_ifcfg['NAME'].split(" "))
|
||||||
|
# FIXME - change in dracut?
|
||||||
|
slave_filename = "/tmp/ifcfg/ifcfg-%s" % slave
|
||||||
|
log.info("writing ifcfg %s for slave %s of team %s" % (slave_filename, slave, dev))
|
||||||
|
write_ifcfg(slave_filename, slave_ifcfg)
|
||||||
|
|
||||||
|
if net.vlanid:
|
||||||
|
interface_name = "%s.%s" % (dev, net.vlanid)
|
||||||
|
ifcfg.pop('HWADDR')
|
||||||
|
ifcfg['TYPE'] = "Vlan"
|
||||||
|
ifcfg['VLAN'] = "yes"
|
||||||
|
ifcfg['VLAN_ID'] = net.vlanid
|
||||||
|
ifcfg['NAME'] = "VLAN connection %s" % interface_name
|
||||||
|
ifcfg['DEVICE'] = interface_name
|
||||||
|
ifcfg['PHYSDEV'] = dev
|
||||||
|
filename = "/tmp/ifcfg/ifcfg-%s" % interface_name
|
||||||
|
|
||||||
|
log.info("writing ifcfg %s for %s" % (filename, dev))
|
||||||
|
if write_ifcfg(filename, ifcfg):
|
||||||
return filename
|
return filename
|
||||||
|
|
||||||
|
def write_ifcfg(filename, ifcfg):
|
||||||
|
try:
|
||||||
|
with open(filename, "w") as f:
|
||||||
|
f.write('# Generated by parse-kickstart\n')
|
||||||
|
for k,v in ifcfg.items():
|
||||||
|
f.write("%s=%s\n" % (k,v))
|
||||||
|
except IOError as e:
|
||||||
|
log.error("can't write %s: %s" % (filename, e))
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def process_kickstart(ksfile):
|
def process_kickstart(ksfile):
|
||||||
handler = DracutHandler()
|
handler = DracutHandler()
|
||||||
handler.ksdevice = os.environ.get('ksdevice')
|
handler.ksdevice = os.environ.get('ksdevice')
|
||||||
parser = KickstartParser(handler, missingIncludeIsFatal=False)
|
parser = KickstartParser(handler, missingIncludeIsFatal=False, errorsAreFatal=False)
|
||||||
log.info("processing kickstart file %s", ksfile)
|
log.info("processing kickstart file %s", ksfile)
|
||||||
processed_file = preprocessKickstart(ksfile)
|
processed_file = preprocessKickstart(ksfile)
|
||||||
try:
|
try:
|
||||||
|
@ -26,24 +26,22 @@ def pyfiles(moddir):
|
|||||||
yield os.path.join(curdir, f)
|
yield os.path.join(curdir, f)
|
||||||
|
|
||||||
# OK. Use modulefinder to find all the modules etc. this script uses!
|
# OK. Use modulefinder to find all the modules etc. this script uses!
|
||||||
|
|
||||||
finder = ModuleFinder()
|
|
||||||
finder.run_script(sys.argv[1]) # parse the script
|
|
||||||
|
|
||||||
mods = []
|
mods = []
|
||||||
deps = []
|
deps = []
|
||||||
|
for script in sys.argv[1:]:
|
||||||
|
finder = ModuleFinder()
|
||||||
|
finder.run_script(script) # parse the script
|
||||||
|
for name, mod in finder.modules.iteritems():
|
||||||
|
if not mod.__file__: # this module is builtin, so we can skip it
|
||||||
|
continue
|
||||||
|
|
||||||
for name, mod in finder.modules.iteritems():
|
if mod.__file__ not in deps: # grab the file itself
|
||||||
if not mod.__file__: # this module is builtin, so we can skip it
|
deps.append(mod.__file__)
|
||||||
continue
|
|
||||||
|
|
||||||
if mod.__file__ not in deps: # grab the file itself
|
moddir = moduledir(mod.__file__) # if it's part of a module...
|
||||||
deps.append(mod.__file__)
|
if moddir and moddir not in mods: #
|
||||||
|
deps += list(pyfiles(moddir)) # ...get the whole module
|
||||||
moddir = moduledir(mod.__file__) # if it's part of a module...
|
mods.append(moddir)
|
||||||
if moddir and moddir not in mods: #
|
|
||||||
deps += list(pyfiles(moddir)) # ...get the whole module
|
|
||||||
mods.append(moddir)
|
|
||||||
|
|
||||||
# Include some bits that the python install itself needs
|
# Include some bits that the python install itself needs
|
||||||
print get_makefile_filename()
|
print get_makefile_filename()
|
||||||
|
@ -2,8 +2,7 @@
|
|||||||
# generate udev rules for handling anaconda-specific root devices
|
# generate udev rules for handling anaconda-specific root devices
|
||||||
# (just the disk-based ones - the network ones are done by netroot)
|
# (just the disk-based ones - the network ones are done by netroot)
|
||||||
|
|
||||||
# import anaconda-lib for when_diskdev_appears
|
. /lib/anaconda-lib.sh
|
||||||
command -v when_diskdev_appears >/dev/null || . /lib/anaconda-lib.sh
|
|
||||||
|
|
||||||
case "$root" in
|
case "$root" in
|
||||||
anaconda-disk:*)
|
anaconda-disk:*)
|
||||||
|
27
anaconda/dracut/save-initramfs.sh
Normal file
27
anaconda/dracut/save-initramfs.sh
Normal 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
|
@ -1,6 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# generate udev rules for fetching updates
|
# generate udev rules for fetching updates
|
||||||
|
|
||||||
|
. /lib/anaconda-lib.sh
|
||||||
|
|
||||||
updates=$anac_updates
|
updates=$anac_updates
|
||||||
[ -n "$updates" ] || return
|
[ -n "$updates" ] || return
|
||||||
case $updates in
|
case $updates in
|
||||||
|
21
anaconda/m4/codeset.m4
Normal file
21
anaconda/m4/codeset.m4
Normal 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
81
anaconda/m4/fcntl-o.m4
Normal 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.])
|
||||||
|
])
|
@ -1,5 +1,5 @@
|
|||||||
# gettext.m4 serial 60 (gettext-0.17)
|
# gettext.m4 serial 63 (gettext-0.18)
|
||||||
dnl Copyright (C) 1995-2007 Free Software Foundation, Inc.
|
dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
@ -15,7 +15,7 @@ dnl They are *not* in the public domain.
|
|||||||
|
|
||||||
dnl Authors:
|
dnl Authors:
|
||||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006.
|
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
|
||||||
|
|
||||||
dnl Macro to add for using GNU gettext.
|
dnl Macro to add for using GNU gettext.
|
||||||
|
|
||||||
@ -60,6 +60,8 @@ AC_DEFUN([AM_GNU_GETTEXT],
|
|||||||
ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
|
ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
|
||||||
[errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
|
[errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
|
||||||
])])])])])
|
])])])])])
|
||||||
|
ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
|
||||||
|
[AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
|
||||||
ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
|
ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
|
||||||
[errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
|
[errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
|
||||||
])])])])
|
])])])])
|
||||||
@ -123,11 +125,11 @@ AC_DEFUN([AM_GNU_GETTEXT],
|
|||||||
gt_use_preinstalled_gnugettext=no
|
gt_use_preinstalled_gnugettext=no
|
||||||
ifelse(gt_included_intl, yes, [
|
ifelse(gt_included_intl, yes, [
|
||||||
AC_MSG_CHECKING([whether included gettext is requested])
|
AC_MSG_CHECKING([whether included gettext is requested])
|
||||||
AC_ARG_WITH(included-gettext,
|
AC_ARG_WITH([included-gettext],
|
||||||
[ --with-included-gettext use the GNU gettext library included here],
|
[ --with-included-gettext use the GNU gettext library included here],
|
||||||
nls_cv_force_use_gnu_gettext=$withval,
|
nls_cv_force_use_gnu_gettext=$withval,
|
||||||
nls_cv_force_use_gnu_gettext=no)
|
nls_cv_force_use_gnu_gettext=no)
|
||||||
AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
|
AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
|
||||||
|
|
||||||
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
|
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
|
||||||
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
|
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
|
||||||
@ -267,7 +269,7 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
|
|||||||
|
|
||||||
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|
||||||
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
|
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
|
||||||
AC_DEFINE(ENABLE_NLS, 1,
|
AC_DEFINE([ENABLE_NLS], [1],
|
||||||
[Define to 1 if translation of program messages to the user's native language
|
[Define to 1 if translation of program messages to the user's native language
|
||||||
is requested.])
|
is requested.])
|
||||||
else
|
else
|
||||||
@ -301,9 +303,9 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
dnl For backward compatibility. Some packages may be using this.
|
dnl For backward compatibility. Some packages may be using this.
|
||||||
AC_DEFINE(HAVE_GETTEXT, 1,
|
AC_DEFINE([HAVE_GETTEXT], [1],
|
||||||
[Define if the GNU gettext() function is already present or preinstalled.])
|
[Define if the GNU gettext() function is already present or preinstalled.])
|
||||||
AC_DEFINE(HAVE_DCGETTEXT, 1,
|
AC_DEFINE([HAVE_DCGETTEXT], [1],
|
||||||
[Define if the GNU dcgettext() function is already present or preinstalled.])
|
[Define if the GNU dcgettext() function is already present or preinstalled.])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -319,9 +321,9 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
dnl Make all variables we use known to autoconf.
|
dnl Make all variables we use known to autoconf.
|
||||||
AC_SUBST(BUILD_INCLUDED_LIBINTL)
|
AC_SUBST([BUILD_INCLUDED_LIBINTL])
|
||||||
AC_SUBST(USE_INCLUDED_LIBINTL)
|
AC_SUBST([USE_INCLUDED_LIBINTL])
|
||||||
AC_SUBST(CATOBJEXT)
|
AC_SUBST([CATOBJEXT])
|
||||||
|
|
||||||
dnl For backward compatibility. Some configure.ins may be using this.
|
dnl For backward compatibility. Some configure.ins may be using this.
|
||||||
nls_cv_header_intl=
|
nls_cv_header_intl=
|
||||||
@ -329,36 +331,36 @@ return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_a
|
|||||||
|
|
||||||
dnl For backward compatibility. Some Makefiles may be using this.
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
DATADIRNAME=share
|
DATADIRNAME=share
|
||||||
AC_SUBST(DATADIRNAME)
|
AC_SUBST([DATADIRNAME])
|
||||||
|
|
||||||
dnl For backward compatibility. Some Makefiles may be using this.
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
INSTOBJEXT=.mo
|
INSTOBJEXT=.mo
|
||||||
AC_SUBST(INSTOBJEXT)
|
AC_SUBST([INSTOBJEXT])
|
||||||
|
|
||||||
dnl For backward compatibility. Some Makefiles may be using this.
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
GENCAT=gencat
|
GENCAT=gencat
|
||||||
AC_SUBST(GENCAT)
|
AC_SUBST([GENCAT])
|
||||||
|
|
||||||
dnl For backward compatibility. Some Makefiles may be using this.
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
INTLOBJS=
|
INTLOBJS=
|
||||||
if test "$USE_INCLUDED_LIBINTL" = yes; then
|
if test "$USE_INCLUDED_LIBINTL" = yes; then
|
||||||
INTLOBJS="\$(GETTOBJS)"
|
INTLOBJS="\$(GETTOBJS)"
|
||||||
fi
|
fi
|
||||||
AC_SUBST(INTLOBJS)
|
AC_SUBST([INTLOBJS])
|
||||||
|
|
||||||
dnl Enable libtool support if the surrounding package wishes it.
|
dnl Enable libtool support if the surrounding package wishes it.
|
||||||
INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
|
INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
|
||||||
AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
|
AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl For backward compatibility. Some Makefiles may be using this.
|
dnl For backward compatibility. Some Makefiles may be using this.
|
||||||
INTLLIBS="$LIBINTL"
|
INTLLIBS="$LIBINTL"
|
||||||
AC_SUBST(INTLLIBS)
|
AC_SUBST([INTLLIBS])
|
||||||
|
|
||||||
dnl Make all documented variables known to autoconf.
|
dnl Make all documented variables known to autoconf.
|
||||||
AC_SUBST(LIBINTL)
|
AC_SUBST([LIBINTL])
|
||||||
AC_SUBST(LTLIBINTL)
|
AC_SUBST([LTLIBINTL])
|
||||||
AC_SUBST(POSUB)
|
AC_SUBST([POSUB])
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
30
anaconda/m4/glibc2.m4
Normal file
30
anaconda/m4/glibc2.m4
Normal 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
30
anaconda/m4/glibc21.m4
Normal 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"
|
||||||
|
]
|
||||||
|
)
|
@ -1,5 +1,5 @@
|
|||||||
# iconv.m4 serial AM6 (gettext-0.17)
|
# iconv.m4 serial 11 (gettext-0.18.1)
|
||||||
dnl Copyright (C) 2000-2002, 2007 Free Software Foundation, Inc.
|
dnl Copyright (C) 2000-2002, 2007-2010 Free Software Foundation, Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
@ -34,7 +34,7 @@ AC_DEFUN([AM_ICONV_LINK],
|
|||||||
am_save_CPPFLAGS="$CPPFLAGS"
|
am_save_CPPFLAGS="$CPPFLAGS"
|
||||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
|
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
|
||||||
|
|
||||||
AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [
|
AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
|
||||||
am_cv_func_iconv="no, consider installing GNU libiconv"
|
am_cv_func_iconv="no, consider installing GNU libiconv"
|
||||||
am_cv_lib_iconv=no
|
am_cv_lib_iconv=no
|
||||||
AC_TRY_LINK([#include <stdlib.h>
|
AC_TRY_LINK([#include <stdlib.h>
|
||||||
@ -42,7 +42,7 @@ AC_DEFUN([AM_ICONV_LINK],
|
|||||||
[iconv_t cd = iconv_open("","");
|
[iconv_t cd = iconv_open("","");
|
||||||
iconv(cd,NULL,NULL,NULL,NULL);
|
iconv(cd,NULL,NULL,NULL,NULL);
|
||||||
iconv_close(cd);],
|
iconv_close(cd);],
|
||||||
am_cv_func_iconv=yes)
|
[am_cv_func_iconv=yes])
|
||||||
if test "$am_cv_func_iconv" != yes; then
|
if test "$am_cv_func_iconv" != yes; then
|
||||||
am_save_LIBS="$LIBS"
|
am_save_LIBS="$LIBS"
|
||||||
LIBS="$LIBS $LIBICONV"
|
LIBS="$LIBS $LIBICONV"
|
||||||
@ -51,14 +51,14 @@ AC_DEFUN([AM_ICONV_LINK],
|
|||||||
[iconv_t cd = iconv_open("","");
|
[iconv_t cd = iconv_open("","");
|
||||||
iconv(cd,NULL,NULL,NULL,NULL);
|
iconv(cd,NULL,NULL,NULL,NULL);
|
||||||
iconv_close(cd);],
|
iconv_close(cd);],
|
||||||
am_cv_lib_iconv=yes
|
[am_cv_lib_iconv=yes]
|
||||||
am_cv_func_iconv=yes)
|
[am_cv_func_iconv=yes])
|
||||||
LIBS="$am_save_LIBS"
|
LIBS="$am_save_LIBS"
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
if test "$am_cv_func_iconv" = yes; then
|
if test "$am_cv_func_iconv" = yes; then
|
||||||
AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [
|
AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
|
||||||
dnl This tests against bugs in AIX 5.1 and HP-UX 11.11.
|
dnl This tests against bugs in AIX 5.1, HP-UX 11.11, Solaris 10.
|
||||||
am_save_LIBS="$LIBS"
|
am_save_LIBS="$LIBS"
|
||||||
if test $am_cv_lib_iconv = yes; then
|
if test $am_cv_lib_iconv = yes; then
|
||||||
LIBS="$LIBS $LIBICONV"
|
LIBS="$LIBS $LIBICONV"
|
||||||
@ -87,6 +87,25 @@ int main ()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* Test against Solaris 10 bug: Failures are not distinguishable from
|
||||||
|
successful returns. */
|
||||||
|
{
|
||||||
|
iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
|
||||||
|
if (cd_ascii_to_88591 != (iconv_t)(-1))
|
||||||
|
{
|
||||||
|
static const char input[] = "\263";
|
||||||
|
char buf[10];
|
||||||
|
const char *inptr = input;
|
||||||
|
size_t inbytesleft = strlen (input);
|
||||||
|
char *outptr = buf;
|
||||||
|
size_t outbytesleft = sizeof (buf);
|
||||||
|
size_t res = iconv (cd_ascii_to_88591,
|
||||||
|
(char **) &inptr, &inbytesleft,
|
||||||
|
&outptr, &outbytesleft);
|
||||||
|
if (res == 0)
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
#if 0 /* This bug could be worked around by the caller. */
|
#if 0 /* This bug could be worked around by the caller. */
|
||||||
/* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
|
/* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
|
||||||
{
|
{
|
||||||
@ -134,7 +153,7 @@ int main ()
|
|||||||
am_func_iconv=no am_cv_lib_iconv=no
|
am_func_iconv=no am_cv_lib_iconv=no
|
||||||
fi
|
fi
|
||||||
if test "$am_func_iconv" = yes; then
|
if test "$am_func_iconv" = yes; then
|
||||||
AC_DEFINE(HAVE_ICONV, 1,
|
AC_DEFINE([HAVE_ICONV], [1],
|
||||||
[Define if you have the iconv() function and it works.])
|
[Define if you have the iconv() function and it works.])
|
||||||
fi
|
fi
|
||||||
if test "$am_cv_lib_iconv" = yes; then
|
if test "$am_cv_lib_iconv" = yes; then
|
||||||
@ -147,16 +166,31 @@ int main ()
|
|||||||
LIBICONV=
|
LIBICONV=
|
||||||
LTLIBICONV=
|
LTLIBICONV=
|
||||||
fi
|
fi
|
||||||
AC_SUBST(LIBICONV)
|
AC_SUBST([LIBICONV])
|
||||||
AC_SUBST(LTLIBICONV)
|
AC_SUBST([LTLIBICONV])
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_DEFUN([AM_ICONV],
|
dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
|
||||||
|
dnl avoid warnings like
|
||||||
|
dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
|
||||||
|
dnl This is tricky because of the way 'aclocal' is implemented:
|
||||||
|
dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
|
||||||
|
dnl Otherwise aclocal's initial scan pass would miss the macro definition.
|
||||||
|
dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
|
||||||
|
dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
|
||||||
|
dnl warnings.
|
||||||
|
m4_define([gl_iconv_AC_DEFUN],
|
||||||
|
m4_version_prereq([2.64],
|
||||||
|
[[AC_DEFUN_ONCE(
|
||||||
|
[$1], [$2])]],
|
||||||
|
[[AC_DEFUN(
|
||||||
|
[$1], [$2])]]))
|
||||||
|
gl_iconv_AC_DEFUN([AM_ICONV],
|
||||||
[
|
[
|
||||||
AM_ICONV_LINK
|
AM_ICONV_LINK
|
||||||
if test "$am_cv_func_iconv" = yes; then
|
if test "$am_cv_func_iconv" = yes; then
|
||||||
AC_MSG_CHECKING([for iconv declaration])
|
AC_MSG_CHECKING([for iconv declaration])
|
||||||
AC_CACHE_VAL(am_cv_proto_iconv, [
|
AC_CACHE_VAL([am_cv_proto_iconv], [
|
||||||
AC_TRY_COMPILE([
|
AC_TRY_COMPILE([
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <iconv.h>
|
#include <iconv.h>
|
||||||
@ -169,12 +203,12 @@ size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, si
|
|||||||
#else
|
#else
|
||||||
size_t iconv();
|
size_t iconv();
|
||||||
#endif
|
#endif
|
||||||
], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
|
], [], [am_cv_proto_iconv_arg1=""], [am_cv_proto_iconv_arg1="const"])
|
||||||
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
|
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
|
||||||
am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
|
am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
|
||||||
AC_MSG_RESULT([$]{ac_t:-
|
AC_MSG_RESULT([
|
||||||
}[$]am_cv_proto_iconv)
|
$am_cv_proto_iconv])
|
||||||
AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
|
AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
|
||||||
[Define as const if the declaration of iconv() needs const.])
|
[Define as const if the declaration of iconv() needs const.])
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
|
84
anaconda/m4/intdiv0.m4
Normal file
84
anaconda/m4/intdiv0.m4
Normal 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
294
anaconda/m4/intl.m4
Normal 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.])
|
||||||
|
])
|
@ -1,6 +1,5 @@
|
|||||||
# nls.m4 serial 5 (gettext-0.18)
|
# intldir.m4 serial 2 (gettext-0.18)
|
||||||
dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
|
dnl Copyright (C) 2006, 2009-2010 Free Software Foundation, Inc.
|
||||||
dnl Inc.
|
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
@ -14,19 +13,7 @@ dnl by the GNU Library General Public License, and the rest of the GNU
|
|||||||
dnl gettext package package is covered by the GNU General Public License.
|
dnl gettext package package is covered by the GNU General Public License.
|
||||||
dnl They are *not* in the public domain.
|
dnl They are *not* in the public domain.
|
||||||
|
|
||||||
dnl Authors:
|
AC_PREREQ([2.52])
|
||||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
|
||||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
|
||||||
|
|
||||||
AC_PREREQ([2.50])
|
dnl Tells the AM_GNU_GETTEXT macro to consider an intl/ directory.
|
||||||
|
AC_DEFUN([AM_GNU_GETTEXT_INTL_SUBDIR], [])
|
||||||
AC_DEFUN([AM_NLS],
|
|
||||||
[
|
|
||||||
AC_MSG_CHECKING([whether NLS is requested])
|
|
||||||
dnl Default is enabled NLS
|
|
||||||
AC_ARG_ENABLE([nls],
|
|
||||||
[ --disable-nls do not use Native Language Support],
|
|
||||||
USE_NLS=$enableval, USE_NLS=yes)
|
|
||||||
AC_MSG_RESULT([$USE_NLS])
|
|
||||||
AC_SUBST([USE_NLS])
|
|
||||||
])
|
|
51
anaconda/m4/intlmacosx.m4
Normal file
51
anaconda/m4/intlmacosx.m4
Normal 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
33
anaconda/m4/intmax.m4
Normal 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
|
||||||
|
])
|
36
anaconda/m4/inttypes-pri.m4
Normal file
36
anaconda/m4/inttypes-pri.m4
Normal 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
26
anaconda/m4/inttypes_h.m4
Normal 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
31
anaconda/m4/lcmessage.m4
Normal 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
|
||||||
|
])
|
@ -1,5 +1,5 @@
|
|||||||
# lib-ld.m4 serial 3 (gettext-0.13)
|
# lib-ld.m4 serial 4 (gettext-0.18)
|
||||||
dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
|
dnl Copyright (C) 1996-2003, 2009-2010 Free Software Foundation, Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
@ -10,7 +10,7 @@ dnl with libtool.m4.
|
|||||||
|
|
||||||
dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
|
dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
|
||||||
AC_DEFUN([AC_LIB_PROG_LD_GNU],
|
AC_DEFUN([AC_LIB_PROG_LD_GNU],
|
||||||
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
|
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
|
||||||
[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
|
[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
|
||||||
case `$LD -v 2>&1 </dev/null` in
|
case `$LD -v 2>&1 </dev/null` in
|
||||||
*GNU* | *'with BFD'*)
|
*GNU* | *'with BFD'*)
|
||||||
@ -23,7 +23,7 @@ with_gnu_ld=$acl_cv_prog_gnu_ld
|
|||||||
|
|
||||||
dnl From libtool-1.4. Sets the variable LD.
|
dnl From libtool-1.4. Sets the variable LD.
|
||||||
AC_DEFUN([AC_LIB_PROG_LD],
|
AC_DEFUN([AC_LIB_PROG_LD],
|
||||||
[AC_ARG_WITH(gnu-ld,
|
[AC_ARG_WITH([gnu-ld],
|
||||||
[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
|
[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
|
||||||
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
|
test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
|
||||||
AC_REQUIRE([AC_PROG_CC])dnl
|
AC_REQUIRE([AC_PROG_CC])dnl
|
||||||
@ -59,7 +59,7 @@ if test "$GCC" = yes; then
|
|||||||
# Canonicalize the path of ld
|
# Canonicalize the path of ld
|
||||||
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
|
ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
|
||||||
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
|
while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
|
||||||
ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
|
ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
|
||||||
done
|
done
|
||||||
test -z "$LD" && LD="$ac_prog"
|
test -z "$LD" && LD="$ac_prog"
|
||||||
;;
|
;;
|
||||||
@ -77,7 +77,7 @@ elif test "$with_gnu_ld" = yes; then
|
|||||||
else
|
else
|
||||||
AC_MSG_CHECKING([for non-GNU ld])
|
AC_MSG_CHECKING([for non-GNU ld])
|
||||||
fi
|
fi
|
||||||
AC_CACHE_VAL(acl_cv_path_LD,
|
AC_CACHE_VAL([acl_cv_path_LD],
|
||||||
[if test -z "$LD"; then
|
[if test -z "$LD"; then
|
||||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
|
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
|
||||||
for ac_dir in $PATH; do
|
for ac_dir in $PATH; do
|
||||||
@ -89,9 +89,9 @@ AC_CACHE_VAL(acl_cv_path_LD,
|
|||||||
# Break only if it was the GNU/non-GNU ld that we prefer.
|
# Break only if it was the GNU/non-GNU ld that we prefer.
|
||||||
case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
|
case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
|
||||||
*GNU* | *'with BFD'*)
|
*GNU* | *'with BFD'*)
|
||||||
test "$with_gnu_ld" != no && break ;;
|
test "$with_gnu_ld" != no && break ;;
|
||||||
*)
|
*)
|
||||||
test "$with_gnu_ld" != yes && break ;;
|
test "$with_gnu_ld" != yes && break ;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@ -101,9 +101,9 @@ else
|
|||||||
fi])
|
fi])
|
||||||
LD="$acl_cv_path_LD"
|
LD="$acl_cv_path_LD"
|
||||||
if test -n "$LD"; then
|
if test -n "$LD"; then
|
||||||
AC_MSG_RESULT($LD)
|
AC_MSG_RESULT([$LD])
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT([no])
|
||||||
fi
|
fi
|
||||||
test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
|
test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
|
||||||
AC_LIB_PROG_LD_GNU
|
AC_LIB_PROG_LD_GNU
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
# lib-link.m4 serial 13 (gettext-0.17)
|
# lib-link.m4 serial 21 (gettext-0.18)
|
||||||
dnl Copyright (C) 2001-2007 Free Software Foundation, Inc.
|
dnl Copyright (C) 2001-2010 Free Software Foundation, Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
dnl From Bruno Haible.
|
dnl From Bruno Haible.
|
||||||
|
|
||||||
AC_PREREQ(2.54)
|
AC_PREREQ([2.54])
|
||||||
|
|
||||||
dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
|
dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
|
||||||
dnl the libraries corresponding to explicit and implicit dependencies.
|
dnl the libraries corresponding to explicit and implicit dependencies.
|
||||||
@ -18,9 +18,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS],
|
|||||||
[
|
[
|
||||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||||
AC_REQUIRE([AC_LIB_RPATH])
|
AC_REQUIRE([AC_LIB_RPATH])
|
||||||
define([Name],[translit([$1],[./-], [___])])
|
pushdef([Name],[translit([$1],[./-], [___])])
|
||||||
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||||
AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
|
AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
|
||||||
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
||||||
ac_cv_lib[]Name[]_libs="$LIB[]NAME"
|
ac_cv_lib[]Name[]_libs="$LIB[]NAME"
|
||||||
@ -39,16 +39,17 @@ AC_DEFUN([AC_LIB_LINKFLAGS],
|
|||||||
dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
|
dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
|
||||||
dnl results of this search when this library appears as a dependency.
|
dnl results of this search when this library appears as a dependency.
|
||||||
HAVE_LIB[]NAME=yes
|
HAVE_LIB[]NAME=yes
|
||||||
undefine([Name])
|
popdef([NAME])
|
||||||
undefine([NAME])
|
popdef([Name])
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
|
dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
|
||||||
dnl searches for libname and the libraries corresponding to explicit and
|
dnl searches for libname and the libraries corresponding to explicit and
|
||||||
dnl implicit dependencies, together with the specified include files and
|
dnl implicit dependencies, together with the specified include files and
|
||||||
dnl the ability to compile and link the specified testcode. If found, it
|
dnl the ability to compile and link the specified testcode. The missing-message
|
||||||
dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
|
dnl defaults to 'no' and may contain additional hints for the user.
|
||||||
dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
|
dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
|
||||||
|
dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
|
||||||
dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
|
dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
|
||||||
dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
|
dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
|
||||||
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
|
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
|
||||||
@ -57,9 +58,9 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
|||||||
[
|
[
|
||||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
||||||
AC_REQUIRE([AC_LIB_RPATH])
|
AC_REQUIRE([AC_LIB_RPATH])
|
||||||
define([Name],[translit([$1],[./-], [___])])
|
pushdef([Name],[translit([$1],[./-], [___])])
|
||||||
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||||
|
|
||||||
dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
|
dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
|
||||||
dnl accordingly.
|
dnl accordingly.
|
||||||
@ -73,13 +74,25 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
|||||||
|
|
||||||
AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
|
AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
|
||||||
ac_save_LIBS="$LIBS"
|
ac_save_LIBS="$LIBS"
|
||||||
LIBS="$LIBS $LIB[]NAME"
|
dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
|
||||||
AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
|
dnl because these -l options might require -L options that are present in
|
||||||
|
dnl LIBS. -l options benefit only from the -L options listed before it.
|
||||||
|
dnl Otherwise, add it to the front of LIBS, because it may be a static
|
||||||
|
dnl library that depends on another static library that is present in LIBS.
|
||||||
|
dnl Static libraries benefit only from the static libraries listed after
|
||||||
|
dnl it.
|
||||||
|
case " $LIB[]NAME" in
|
||||||
|
*" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
|
||||||
|
*) LIBS="$LIB[]NAME $LIBS" ;;
|
||||||
|
esac
|
||||||
|
AC_TRY_LINK([$3], [$4],
|
||||||
|
[ac_cv_lib[]Name=yes],
|
||||||
|
[ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
|
||||||
LIBS="$ac_save_LIBS"
|
LIBS="$ac_save_LIBS"
|
||||||
])
|
])
|
||||||
if test "$ac_cv_lib[]Name" = yes; then
|
if test "$ac_cv_lib[]Name" = yes; then
|
||||||
HAVE_LIB[]NAME=yes
|
HAVE_LIB[]NAME=yes
|
||||||
AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
|
AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
|
||||||
AC_MSG_CHECKING([how to link with lib[]$1])
|
AC_MSG_CHECKING([how to link with lib[]$1])
|
||||||
AC_MSG_RESULT([$LIB[]NAME])
|
AC_MSG_RESULT([$LIB[]NAME])
|
||||||
else
|
else
|
||||||
@ -95,8 +108,8 @@ AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
|||||||
AC_SUBST([LIB]NAME)
|
AC_SUBST([LIB]NAME)
|
||||||
AC_SUBST([LTLIB]NAME)
|
AC_SUBST([LTLIB]NAME)
|
||||||
AC_SUBST([LIB]NAME[_PREFIX])
|
AC_SUBST([LIB]NAME[_PREFIX])
|
||||||
undefine([Name])
|
popdef([NAME])
|
||||||
undefine([NAME])
|
popdef([Name])
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl Determine the platform dependent parameters needed to use rpath:
|
dnl Determine the platform dependent parameters needed to use rpath:
|
||||||
@ -114,7 +127,7 @@ AC_DEFUN([AC_LIB_RPATH],
|
|||||||
AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
|
AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
|
||||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
|
AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
|
||||||
AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
|
AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
|
||||||
AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
|
AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
|
||||||
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
|
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
|
||||||
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
|
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
|
||||||
. ./conftest.sh
|
. ./conftest.sh
|
||||||
@ -131,11 +144,32 @@ AC_DEFUN([AC_LIB_RPATH],
|
|||||||
acl_hardcode_direct="$acl_cv_hardcode_direct"
|
acl_hardcode_direct="$acl_cv_hardcode_direct"
|
||||||
acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
|
acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
|
||||||
dnl Determine whether the user wants rpath handling at all.
|
dnl Determine whether the user wants rpath handling at all.
|
||||||
AC_ARG_ENABLE(rpath,
|
AC_ARG_ENABLE([rpath],
|
||||||
[ --disable-rpath do not hardcode runtime library paths],
|
[ --disable-rpath do not hardcode runtime library paths],
|
||||||
:, enable_rpath=yes)
|
:, enable_rpath=yes)
|
||||||
])
|
])
|
||||||
|
|
||||||
|
dnl AC_LIB_FROMPACKAGE(name, package)
|
||||||
|
dnl declares that libname comes from the given package. The configure file
|
||||||
|
dnl will then not have a --with-libname-prefix option but a
|
||||||
|
dnl --with-package-prefix option. Several libraries can come from the same
|
||||||
|
dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
|
||||||
|
dnl macro call that searches for libname.
|
||||||
|
AC_DEFUN([AC_LIB_FROMPACKAGE],
|
||||||
|
[
|
||||||
|
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||||
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||||
|
define([acl_frompackage_]NAME, [$2])
|
||||||
|
popdef([NAME])
|
||||||
|
pushdef([PACK],[$2])
|
||||||
|
pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
|
||||||
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||||
|
define([acl_libsinpackage_]PACKUP,
|
||||||
|
m4_ifdef([acl_libsinpackage_]PACKUP, [acl_libsinpackage_]PACKUP[[, ]],)[lib$1])
|
||||||
|
popdef([PACKUP])
|
||||||
|
popdef([PACK])
|
||||||
|
])
|
||||||
|
|
||||||
dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
|
dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
|
||||||
dnl the libraries corresponding to explicit and implicit dependencies.
|
dnl the libraries corresponding to explicit and implicit dependencies.
|
||||||
dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
|
dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
|
||||||
@ -144,19 +178,23 @@ dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
|||||||
AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
||||||
[
|
[
|
||||||
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
||||||
define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
pushdef([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
||||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||||
|
pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
|
||||||
|
pushdef([PACKUP],[translit(PACK,[abcdefghijklmnopqrstuvwxyz./-],
|
||||||
|
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
||||||
|
pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
|
||||||
dnl Autoconf >= 2.61 supports dots in --with options.
|
dnl Autoconf >= 2.61 supports dots in --with options.
|
||||||
define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])])
|
pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit(PACK,[.],[_])],PACK)])
|
||||||
dnl By default, look in $includedir and $libdir.
|
dnl By default, look in $includedir and $libdir.
|
||||||
use_additional=yes
|
use_additional=yes
|
||||||
AC_LIB_WITH_FINAL_PREFIX([
|
AC_LIB_WITH_FINAL_PREFIX([
|
||||||
eval additional_includedir=\"$includedir\"
|
eval additional_includedir=\"$includedir\"
|
||||||
eval additional_libdir=\"$libdir\"
|
eval additional_libdir=\"$libdir\"
|
||||||
])
|
])
|
||||||
AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix],
|
AC_ARG_WITH(P_A_C_K[-prefix],
|
||||||
[ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
|
[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
|
||||||
--without-lib]N_A_M_E[-prefix don't search for lib$1 in includedir and libdir],
|
--without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
|
||||||
[
|
[
|
||||||
if test "X$withval" = "Xno"; then
|
if test "X$withval" = "Xno"; then
|
||||||
use_additional=no
|
use_additional=no
|
||||||
@ -169,6 +207,10 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
|||||||
else
|
else
|
||||||
additional_includedir="$withval/include"
|
additional_includedir="$withval/include"
|
||||||
additional_libdir="$withval/$acl_libdirstem"
|
additional_libdir="$withval/$acl_libdirstem"
|
||||||
|
if test "$acl_libdirstem2" != "$acl_libdirstem" \
|
||||||
|
&& ! test -d "$withval/$acl_libdirstem"; then
|
||||||
|
additional_libdir="$withval/$acl_libdirstem2"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
])
|
])
|
||||||
@ -178,6 +220,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
|||||||
LTLIB[]NAME=
|
LTLIB[]NAME=
|
||||||
INC[]NAME=
|
INC[]NAME=
|
||||||
LIB[]NAME[]_PREFIX=
|
LIB[]NAME[]_PREFIX=
|
||||||
|
dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
|
||||||
|
dnl computed. So it has to be reset here.
|
||||||
|
HAVE_LIB[]NAME=
|
||||||
rpathdirs=
|
rpathdirs=
|
||||||
ltrpathdirs=
|
ltrpathdirs=
|
||||||
names_already_handled=
|
names_already_handled=
|
||||||
@ -327,7 +372,9 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
|||||||
dnl Linking with a shared library. We attempt to hardcode its
|
dnl Linking with a shared library. We attempt to hardcode its
|
||||||
dnl directory into the executable's runpath, unless it's the
|
dnl directory into the executable's runpath, unless it's the
|
||||||
dnl standard /usr/lib.
|
dnl standard /usr/lib.
|
||||||
if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then
|
if test "$enable_rpath" = no \
|
||||||
|
|| test "X$found_dir" = "X/usr/$acl_libdirstem" \
|
||||||
|
|| test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
|
||||||
dnl No hardcoding is needed.
|
dnl No hardcoding is needed.
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
||||||
else
|
else
|
||||||
@ -415,7 +462,16 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
|||||||
case "$found_dir" in
|
case "$found_dir" in
|
||||||
*/$acl_libdirstem | */$acl_libdirstem/)
|
*/$acl_libdirstem | */$acl_libdirstem/)
|
||||||
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
|
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
|
||||||
LIB[]NAME[]_PREFIX="$basedir"
|
if test "$name" = '$1'; then
|
||||||
|
LIB[]NAME[]_PREFIX="$basedir"
|
||||||
|
fi
|
||||||
|
additional_includedir="$basedir/include"
|
||||||
|
;;
|
||||||
|
*/$acl_libdirstem2 | */$acl_libdirstem2/)
|
||||||
|
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
|
||||||
|
if test "$name" = '$1'; then
|
||||||
|
LIB[]NAME[]_PREFIX="$basedir"
|
||||||
|
fi
|
||||||
additional_includedir="$basedir/include"
|
additional_includedir="$basedir/include"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -476,9 +532,11 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
|||||||
dnl 3. if it's already present in $LDFLAGS or the already
|
dnl 3. if it's already present in $LDFLAGS or the already
|
||||||
dnl constructed $LIBNAME,
|
dnl constructed $LIBNAME,
|
||||||
dnl 4. if it doesn't exist as a directory.
|
dnl 4. if it doesn't exist as a directory.
|
||||||
if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
|
if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
|
||||||
|
&& test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
|
||||||
haveit=
|
haveit=
|
||||||
if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
|
if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
|
||||||
|
|| test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
|
||||||
if test -n "$GCC"; then
|
if test -n "$GCC"; then
|
||||||
case $host_os in
|
case $host_os in
|
||||||
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
||||||
@ -609,6 +667,11 @@ AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
|||||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
|
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
popdef([P_A_C_K])
|
||||||
|
popdef([PACKLIBS])
|
||||||
|
popdef([PACKUP])
|
||||||
|
popdef([PACK])
|
||||||
|
popdef([NAME])
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
|
dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
|
||||||
@ -654,7 +717,8 @@ AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
|
|||||||
if test -n "$next"; then
|
if test -n "$next"; then
|
||||||
dir="$next"
|
dir="$next"
|
||||||
dnl No need to hardcode the standard /usr/lib.
|
dnl No need to hardcode the standard /usr/lib.
|
||||||
if test "X$dir" != "X/usr/$acl_libdirstem"; then
|
if test "X$dir" != "X/usr/$acl_libdirstem" \
|
||||||
|
&& test "X$dir" != "X/usr/$acl_libdirstem2"; then
|
||||||
rpathdirs="$rpathdirs $dir"
|
rpathdirs="$rpathdirs $dir"
|
||||||
fi
|
fi
|
||||||
next=
|
next=
|
||||||
@ -663,7 +727,8 @@ AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
|
|||||||
-L) next=yes ;;
|
-L) next=yes ;;
|
||||||
-L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
|
-L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
|
||||||
dnl No need to hardcode the standard /usr/lib.
|
dnl No need to hardcode the standard /usr/lib.
|
||||||
if test "X$dir" != "X/usr/$acl_libdirstem"; then
|
if test "X$dir" != "X/usr/$acl_libdirstem" \
|
||||||
|
&& test "X$dir" != "X/usr/$acl_libdirstem2"; then
|
||||||
rpathdirs="$rpathdirs $dir"
|
rpathdirs="$rpathdirs $dir"
|
||||||
fi
|
fi
|
||||||
next= ;;
|
next= ;;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# lib-prefix.m4 serial 5 (gettext-0.15)
|
# lib-prefix.m4 serial 7 (gettext-0.18)
|
||||||
dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
|
dnl Copyright (C) 2001-2005, 2008-2010 Free Software Foundation, Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
@ -153,33 +153,72 @@ AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
|
|||||||
prefix="$acl_save_prefix"
|
prefix="$acl_save_prefix"
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing
|
dnl AC_LIB_PREPARE_MULTILIB creates
|
||||||
dnl the basename of the libdir, either "lib" or "lib64".
|
dnl - a variable acl_libdirstem, containing the basename of the libdir, either
|
||||||
|
dnl "lib" or "lib64" or "lib/64",
|
||||||
|
dnl - a variable acl_libdirstem2, as a secondary possible value for
|
||||||
|
dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
|
||||||
|
dnl "lib/amd64".
|
||||||
AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
|
AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
|
||||||
[
|
[
|
||||||
dnl There is no formal standard regarding lib and lib64. The current
|
dnl There is no formal standard regarding lib and lib64.
|
||||||
dnl practice is that on a system supporting 32-bit and 64-bit instruction
|
dnl On glibc systems, the current practice is that on a system supporting
|
||||||
dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit
|
dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
|
||||||
dnl libraries go under $prefix/lib. We determine the compiler's default
|
dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
|
||||||
dnl mode by looking at the compiler's library search path. If at least
|
dnl the compiler's default mode by looking at the compiler's library search
|
||||||
dnl of its elements ends in /lib64 or points to a directory whose absolute
|
dnl path. If at least one of its elements ends in /lib64 or points to a
|
||||||
dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the
|
dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
|
||||||
dnl default, namely "lib".
|
dnl Otherwise we use the default, namely "lib".
|
||||||
|
dnl On Solaris systems, the current practice is that on a system supporting
|
||||||
|
dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
|
||||||
|
dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
|
||||||
|
dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
|
||||||
|
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||||
acl_libdirstem=lib
|
acl_libdirstem=lib
|
||||||
searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
|
acl_libdirstem2=
|
||||||
if test -n "$searchpath"; then
|
case "$host_os" in
|
||||||
acl_save_IFS="${IFS= }"; IFS=":"
|
solaris*)
|
||||||
for searchdir in $searchpath; do
|
dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
|
||||||
if test -d "$searchdir"; then
|
dnl <http://docs.sun.com/app/docs/doc/816-5138/dev-env?l=en&a=view>.
|
||||||
case "$searchdir" in
|
dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
|
||||||
*/lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
|
dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
|
||||||
*) searchdir=`cd "$searchdir" && pwd`
|
dnl symlink is missing, so we set acl_libdirstem2 too.
|
||||||
case "$searchdir" in
|
AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
|
||||||
*/lib64 ) acl_libdirstem=lib64 ;;
|
[AC_EGREP_CPP([sixtyfour bits], [
|
||||||
esac ;;
|
#ifdef _LP64
|
||||||
|
sixtyfour bits
|
||||||
|
#endif
|
||||||
|
], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no])
|
||||||
|
])
|
||||||
|
if test $gl_cv_solaris_64bit = yes; then
|
||||||
|
acl_libdirstem=lib/64
|
||||||
|
case "$host_cpu" in
|
||||||
|
sparc*) acl_libdirstem2=lib/sparcv9 ;;
|
||||||
|
i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
done
|
;;
|
||||||
IFS="$acl_save_IFS"
|
*)
|
||||||
fi
|
searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
|
||||||
|
if test -n "$searchpath"; then
|
||||||
|
acl_save_IFS="${IFS= }"; IFS=":"
|
||||||
|
for searchdir in $searchpath; do
|
||||||
|
if test -d "$searchdir"; then
|
||||||
|
case "$searchdir" in
|
||||||
|
*/lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
|
||||||
|
*/../ | */.. )
|
||||||
|
# Better ignore directories of this form. They are misleading.
|
||||||
|
;;
|
||||||
|
*) searchdir=`cd "$searchdir" && pwd`
|
||||||
|
case "$searchdir" in
|
||||||
|
*/lib64 ) acl_libdirstem=lib64 ;;
|
||||||
|
esac ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
IFS="$acl_save_IFS"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
|
||||||
])
|
])
|
||||||
|
12
anaconda/m4/libtool.m4
vendored
12
anaconda/m4/libtool.m4
vendored
@ -1312,7 +1312,7 @@ ia64-*-hpux*)
|
|||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
;;
|
;;
|
||||||
|
|
||||||
x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
|
x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \
|
||||||
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
|
s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
|
||||||
# Find out which ABI we are using.
|
# Find out which ABI we are using.
|
||||||
echo 'int i;' > conftest.$ac_ext
|
echo 'int i;' > conftest.$ac_ext
|
||||||
@ -1326,7 +1326,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
|
|||||||
x86_64-*linux*)
|
x86_64-*linux*)
|
||||||
LD="${LD-ld} -m elf_i386"
|
LD="${LD-ld} -m elf_i386"
|
||||||
;;
|
;;
|
||||||
ppc64-*linux*|powerpc64-*linux*)
|
powerpc64le-*linux*)
|
||||||
|
LD="${LD-ld} -m elf32lppclinux"
|
||||||
|
;;
|
||||||
|
powerpc64-*linux*)
|
||||||
LD="${LD-ld} -m elf32ppclinux"
|
LD="${LD-ld} -m elf32ppclinux"
|
||||||
;;
|
;;
|
||||||
s390x-*linux*)
|
s390x-*linux*)
|
||||||
@ -1345,7 +1348,10 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
|
|||||||
x86_64-*linux*)
|
x86_64-*linux*)
|
||||||
LD="${LD-ld} -m elf_x86_64"
|
LD="${LD-ld} -m elf_x86_64"
|
||||||
;;
|
;;
|
||||||
ppc*-*linux*|powerpc*-*linux*)
|
powerpcle-*linux*)
|
||||||
|
LD="${LD-ld} -m elf64lppc"
|
||||||
|
;;
|
||||||
|
powerpc-*linux*)
|
||||||
LD="${LD-ld} -m elf64ppc"
|
LD="${LD-ld} -m elf64ppc"
|
||||||
;;
|
;;
|
||||||
s390*-*linux*|s390*-*tpf*)
|
s390*-*linux*|s390*-*tpf*)
|
||||||
|
37
anaconda/m4/lock.m4
Normal file
37
anaconda/m4/lock.m4
Normal 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
106
anaconda/m4/longlong.m4
Normal 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));]])
|
||||||
|
])
|
@ -1,5 +1,6 @@
|
|||||||
# nls.m4 serial 3 (gettext-0.15)
|
# nls.m4 serial 5 (gettext-0.18)
|
||||||
dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc.
|
dnl Copyright (C) 1995-2003, 2005-2006, 2008-2010 Free Software Foundation,
|
||||||
|
dnl Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
@ -17,15 +18,15 @@ dnl Authors:
|
|||||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
||||||
|
|
||||||
AC_PREREQ(2.50)
|
AC_PREREQ([2.50])
|
||||||
|
|
||||||
AC_DEFUN([AM_NLS],
|
AC_DEFUN([AM_NLS],
|
||||||
[
|
[
|
||||||
AC_MSG_CHECKING([whether NLS is requested])
|
AC_MSG_CHECKING([whether NLS is requested])
|
||||||
dnl Default is enabled NLS
|
dnl Default is enabled NLS
|
||||||
AC_ARG_ENABLE(nls,
|
AC_ARG_ENABLE([nls],
|
||||||
[ --disable-nls do not use Native Language Support],
|
[ --disable-nls do not use Native Language Support],
|
||||||
USE_NLS=$enableval, USE_NLS=yes)
|
USE_NLS=$enableval, USE_NLS=yes)
|
||||||
AC_MSG_RESULT($USE_NLS)
|
AC_MSG_RESULT([$USE_NLS])
|
||||||
AC_SUBST(USE_NLS)
|
AC_SUBST([USE_NLS])
|
||||||
])
|
])
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# po.m4 serial 15 (gettext-0.17)
|
# po.m4 serial 17 (gettext-0.18)
|
||||||
dnl Copyright (C) 1995-2007 Free Software Foundation, Inc.
|
dnl Copyright (C) 1995-2010 Free Software Foundation, Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
@ -17,7 +17,7 @@ dnl Authors:
|
|||||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
|
||||||
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
|
||||||
|
|
||||||
AC_PREREQ(2.50)
|
AC_PREREQ([2.50])
|
||||||
|
|
||||||
dnl Checks for all prerequisites of the po subdirectory.
|
dnl Checks for all prerequisites of the po subdirectory.
|
||||||
AC_DEFUN([AM_PO_SUBDIRS],
|
AC_DEFUN([AM_PO_SUBDIRS],
|
||||||
@ -29,7 +29,7 @@ AC_DEFUN([AM_PO_SUBDIRS],
|
|||||||
|
|
||||||
dnl Release version of the gettext macros. This is used to ensure that
|
dnl Release version of the gettext macros. This is used to ensure that
|
||||||
dnl the gettext macros and po/Makefile.in.in are in sync.
|
dnl the gettext macros and po/Makefile.in.in are in sync.
|
||||||
AC_SUBST([GETTEXT_MACRO_VERSION], [0.17])
|
AC_SUBST([GETTEXT_MACRO_VERSION], [0.18])
|
||||||
|
|
||||||
dnl Perform the following tests also if --disable-nls has been given,
|
dnl Perform the following tests also if --disable-nls has been given,
|
||||||
dnl because they are needed for "make dist" to work.
|
dnl because they are needed for "make dist" to work.
|
||||||
@ -41,7 +41,7 @@ AC_DEFUN([AM_PO_SUBDIRS],
|
|||||||
[$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
|
[$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
|
||||||
(if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
|
(if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
|
||||||
:)
|
:)
|
||||||
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
|
AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
|
||||||
|
|
||||||
dnl Test whether it is GNU msgfmt >= 0.15.
|
dnl Test whether it is GNU msgfmt >= 0.15.
|
||||||
changequote(,)dnl
|
changequote(,)dnl
|
||||||
|
45
anaconda/m4/printf-posix.m4
Normal file
45
anaconda/m4/printf-posix.m4
Normal 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
|
||||||
|
])
|
@ -1,5 +1,5 @@
|
|||||||
# progtest.m4 serial 4 (gettext-0.14.2)
|
# progtest.m4 serial 6 (gettext-0.18)
|
||||||
dnl Copyright (C) 1996-2003, 2005 Free Software Foundation, Inc.
|
dnl Copyright (C) 1996-2003, 2005, 2008-2010 Free Software Foundation, Inc.
|
||||||
dnl This file is free software; the Free Software Foundation
|
dnl This file is free software; the Free Software Foundation
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
@ -16,7 +16,7 @@ dnl They are *not* in the public domain.
|
|||||||
dnl Authors:
|
dnl Authors:
|
||||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
|
dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
|
||||||
|
|
||||||
AC_PREREQ(2.50)
|
AC_PREREQ([2.50])
|
||||||
|
|
||||||
# Search path for a program which passes the given test.
|
# Search path for a program which passes the given test.
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ rm -f conf$$.file
|
|||||||
# Extract the first word of "$2", so it can be a program name with args.
|
# Extract the first word of "$2", so it can be a program name with args.
|
||||||
set dummy $2; ac_word=[$]2
|
set dummy $2; ac_word=[$]2
|
||||||
AC_MSG_CHECKING([for $ac_word])
|
AC_MSG_CHECKING([for $ac_word])
|
||||||
AC_CACHE_VAL(ac_cv_path_$1,
|
AC_CACHE_VAL([ac_cv_path_$1],
|
||||||
[case "[$]$1" in
|
[case "[$]$1" in
|
||||||
[[\\/]]* | ?:[[\\/]]*)
|
[[\\/]]* | ?:[[\\/]]*)
|
||||||
ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
|
ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
|
||||||
@ -84,9 +84,9 @@ ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
|
|||||||
esac])dnl
|
esac])dnl
|
||||||
$1="$ac_cv_path_$1"
|
$1="$ac_cv_path_$1"
|
||||||
if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
|
if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
|
||||||
AC_MSG_RESULT([$]$1)
|
AC_MSG_RESULT([$][$1])
|
||||||
else
|
else
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT([no])
|
||||||
fi
|
fi
|
||||||
AC_SUBST($1)dnl
|
AC_SUBST([$1])dnl
|
||||||
])
|
])
|
||||||
|
75
anaconda/m4/size_max.m4
Normal file
75
anaconda/m4/size_max.m4
Normal 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
26
anaconda/m4/stdint_h.m4
Normal 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
347
anaconda/m4/threadlib.m4
Normal 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
30
anaconda/m4/uintmax_t.m4
Normal 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
74
anaconda/m4/visibility.m4
Normal 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
20
anaconda/m4/wchar_t.m4
Normal 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
28
anaconda/m4/wint_t.m4
Normal 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
13
anaconda/m4/xsize.m4
Normal 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])
|
||||||
|
])
|
@ -1,4 +1,4 @@
|
|||||||
# tests/storage/devicelibs/Makefile.am for anaconda
|
# tests/Makefile.am for anaconda
|
||||||
#
|
#
|
||||||
# Copyright (C) 2009 Red Hat, Inc.
|
# Copyright (C) 2009 Red Hat, Inc.
|
||||||
#
|
#
|
||||||
@ -17,6 +17,6 @@
|
|||||||
#
|
#
|
||||||
# Author: David Cantrell <dcantrell@redhat.com>
|
# Author: David Cantrell <dcantrell@redhat.com>
|
||||||
|
|
||||||
EXTRA_DIST = *.py
|
SUBDIRS = mock kickstart_test regex pyanaconda_test logpicker_test
|
||||||
|
|
||||||
MAINTAINERCLEANFILES = Makefile.in
|
MAINTAINERCLEANFILES = Makefile.in
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user