mirror of
https://git.yoctoproject.org/poky
synced 2026-01-29 21:08:42 +01:00
Compare commits
74 Commits
1.3.1
...
1.3.2.fina
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e52a74755b | ||
|
|
b7301a8091 | ||
|
|
7dcaeea2f3 | ||
|
|
8450317a6c | ||
|
|
00ab7c884b | ||
|
|
ad7df4a004 | ||
|
|
84c5c634a6 | ||
|
|
d6cc4edb53 | ||
|
|
094c523ded | ||
|
|
dd3b62d646 | ||
|
|
881f4b9bdd | ||
|
|
e26f12af02 | ||
|
|
ae8e10beb5 | ||
|
|
8927dba785 | ||
|
|
18285be0df | ||
|
|
6798c0ef23 | ||
|
|
5e0124f00d | ||
|
|
2806646a26 | ||
|
|
995de756e3 | ||
|
|
23f3663842 | ||
|
|
2cc162ac12 | ||
|
|
4a9b9004bc | ||
|
|
a69769e3b3 | ||
|
|
7f468c2247 | ||
|
|
f8b915128b | ||
|
|
84b91b829d | ||
|
|
1d58c4b99e | ||
|
|
2a320d9b74 | ||
|
|
bd8e22ad58 | ||
|
|
a5cf163969 | ||
|
|
57ad24d062 | ||
|
|
73a7838a52 | ||
|
|
5d2b15f068 | ||
|
|
45e460d084 | ||
|
|
3a32c753e7 | ||
|
|
a94ebca409 | ||
|
|
fc32cb756e | ||
|
|
6e95fe1683 | ||
|
|
6b8dace6fa | ||
|
|
9267d8d352 | ||
|
|
1c7472dbeb | ||
|
|
a5bdceea55 | ||
|
|
a3dfd0dc1b | ||
|
|
192d249b31 | ||
|
|
c84d6fb67d | ||
|
|
b9be8d85fa | ||
|
|
608207e868 | ||
|
|
5b2ff14255 | ||
|
|
04b34a50eb | ||
|
|
286c2dfc55 | ||
|
|
e73a12790e | ||
|
|
a477bc9088 | ||
|
|
5bd34b9661 | ||
|
|
ae29cdd5d5 | ||
|
|
6884964579 | ||
|
|
7226305c0d | ||
|
|
8120f2c7f8 | ||
|
|
18fe42cef9 | ||
|
|
88de87eb4e | ||
|
|
651658eac7 | ||
|
|
b312cc327f | ||
|
|
28633260b9 | ||
|
|
9cc4d62c0e | ||
|
|
66cbc1e7bb | ||
|
|
632561df6a | ||
|
|
9ab6962972 | ||
|
|
db75025214 | ||
|
|
ab2347d37d | ||
|
|
c0468d398c | ||
|
|
fe66c080cf | ||
|
|
7223b3a80e | ||
|
|
463ae24abf | ||
|
|
e2ef3200e6 | ||
|
|
c584d93537 |
@@ -35,7 +35,7 @@ def check_indent(codestr):
|
||||
|
||||
class CodeParserCache(MultiProcessCache):
|
||||
cache_file_name = "bb_codeparser.dat"
|
||||
CACHE_VERSION = 2
|
||||
CACHE_VERSION = 3
|
||||
|
||||
def __init__(self):
|
||||
MultiProcessCache.__init__(self)
|
||||
@@ -100,7 +100,8 @@ class BufferedLogger(Logger):
|
||||
self.buffer = []
|
||||
|
||||
class PythonParser():
|
||||
getvars = ("d.getVar", "bb.data.getVar", "data.getVar")
|
||||
getvars = ("d.getVar", "bb.data.getVar", "data.getVar", "d.appendVar", "d.prependVar")
|
||||
containsfuncs = ("bb.utils.contains", "base_contains", "oe.utils.contains")
|
||||
execfuncs = ("bb.build.exec_func", "bb.build.exec_task")
|
||||
|
||||
def warn(self, func, arg):
|
||||
@@ -119,7 +120,7 @@ class PythonParser():
|
||||
|
||||
def visit_Call(self, node):
|
||||
name = self.called_node_name(node.func)
|
||||
if name in self.getvars:
|
||||
if name in self.getvars or name in self.containsfuncs:
|
||||
if isinstance(node.args[0], ast.Str):
|
||||
self.var_references.add(node.args[0].s)
|
||||
else:
|
||||
|
||||
@@ -1353,7 +1353,10 @@ class BBCooker:
|
||||
# Empty the environment. The environment will be populated as
|
||||
# necessary from the data store.
|
||||
#bb.utils.empty_environment()
|
||||
prserv.serv.auto_start(self.configuration.data)
|
||||
try:
|
||||
prserv.serv.auto_start(self.configuration.data)
|
||||
except prserv.serv.PRServiceConfigError:
|
||||
bb.event.fire(CookerExit(), self.configuration.event_data)
|
||||
return
|
||||
|
||||
def post_serve(self):
|
||||
|
||||
@@ -266,17 +266,20 @@ def is_local_special(host, port):
|
||||
else:
|
||||
return False
|
||||
|
||||
class PRServiceConfigError(Exception):
|
||||
pass
|
||||
|
||||
def auto_start(d):
|
||||
global singleton
|
||||
if (not d.getVar('PRSERV_HOST', True)) or (not d.getVar('PRSERV_PORT', True)):
|
||||
return True
|
||||
return
|
||||
|
||||
if is_local_special(d.getVar('PRSERV_HOST', True), int(d.getVar('PRSERV_PORT', True))) and not singleton:
|
||||
import bb.utils
|
||||
cachedir = (d.getVar("PERSISTENT_DIR", True) or d.getVar("CACHE", True))
|
||||
if not cachedir:
|
||||
logger.critical("Please set the 'PERSISTENT_DIR' or 'CACHE' variable")
|
||||
sys.exit(1)
|
||||
raise PRServiceConfigError
|
||||
bb.utils.mkdirhier(cachedir)
|
||||
dbfile = os.path.join(cachedir, "prserv.sqlite3")
|
||||
logfile = os.path.join(cachedir, "prserv.log")
|
||||
@@ -292,7 +295,7 @@ def auto_start(d):
|
||||
return PRServerConnection(host,port).ping()
|
||||
except Exception:
|
||||
logger.critical("PRservice %s:%d not available" % (host, port))
|
||||
return False
|
||||
raise PRServiceConfigError
|
||||
|
||||
def auto_shutdown(d=None):
|
||||
global singleton
|
||||
|
||||
@@ -59,6 +59,11 @@
|
||||
<date>April 2013</date>
|
||||
<revremark>Released with the Yocto Project 1.3.1 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.3.2</revnumber>
|
||||
<date>May 2013</date>
|
||||
<revremark>Released with the Yocto Project 1.3.2 Release.</revremark>
|
||||
</revision>
|
||||
</revhistory>
|
||||
|
||||
<copyright>
|
||||
|
||||
@@ -71,6 +71,11 @@
|
||||
<date>April 2013</date>
|
||||
<revremark>Released with the Yocto Project 1.3.1 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.3.2</revnumber>
|
||||
<date>May 2013</date>
|
||||
<revremark>Released with the Yocto Project 1.3.2 Release.</revremark>
|
||||
</revision>
|
||||
</revhistory>
|
||||
|
||||
<copyright>
|
||||
|
||||
@@ -49,6 +49,11 @@
|
||||
<date>April 2013</date>
|
||||
<revremark>Released with the Yocto Project 1.3.1 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.3.2</revnumber>
|
||||
<date>May 2013</date>
|
||||
<revremark>Released with the Yocto Project 1.3.2 Release.</revremark>
|
||||
</revision>
|
||||
</revhistory>
|
||||
|
||||
<copyright>
|
||||
|
||||
@@ -64,6 +64,11 @@
|
||||
<date>April 2013</date>
|
||||
<revremark>Released with the Yocto Project 1.3.1 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.3.2</revnumber>
|
||||
<date>May 2013</date>
|
||||
<revremark>Released with the Yocto Project 1.3.2 Release.</revremark>
|
||||
</revision>
|
||||
</revhistory>
|
||||
|
||||
<copyright>
|
||||
|
||||
@@ -65,6 +65,11 @@
|
||||
<date>April 2013</date>
|
||||
<revremark>Released with the Yocto Project 1.3.1 Release.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>1.3.2</revnumber>
|
||||
<date>May 2013</date>
|
||||
<revremark>Released with the Yocto Project 1.3.2 Release.</revremark>
|
||||
</revision>
|
||||
</revhistory>
|
||||
|
||||
<copyright>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!ENTITY DISTRO "1.3.1">
|
||||
<!ENTITY DISTRO "1.3.2">
|
||||
<!ENTITY DISTRO_NAME "danny">
|
||||
<!ENTITY YOCTO_DOC_VERSION "1.3.1">
|
||||
<!ENTITY POKYVERSION "8.0.1">
|
||||
<!ENTITY YOCTO_DOC_VERSION "1.3.2">
|
||||
<!ENTITY POKYVERSION "8.0.2">
|
||||
<!ENTITY YOCTO_POKY "poky-&DISTRO_NAME;-&POKYVERSION;">
|
||||
<!ENTITY COPYRIGHT_YEAR "2010-2013">
|
||||
<!ENTITY YOCTO_DL_URL "http://downloads.yoctoproject.org">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
DISTRO = "poky"
|
||||
DISTRO_NAME = "Poky 8.0.1 (Yocto Project 1.3.1 Reference Distro)"
|
||||
DISTRO_VERSION = "1.3.1"
|
||||
DISTRO_NAME = "Poky 8.0.2 (Yocto Project 1.3.2 Reference Distro)"
|
||||
DISTRO_VERSION = "1.3.2"
|
||||
SDK_VENDOR = "-pokysdk"
|
||||
SDK_VERSION := "${DISTRO_VERSION}"
|
||||
|
||||
@@ -74,6 +74,7 @@ SANITY_TESTED_DISTROS ?= " \
|
||||
Poky 7.0 (Yocto Project 1.2 Reference Distro) 1.2 \n \
|
||||
Poky 8.0 (Yocto Project 1.3 Reference Distro) 1.3 \n \
|
||||
Poky 8.0.1 (Yocto Project 1.3.1 Reference Distro) 1.3.1 \n \
|
||||
Poky 8.0.2 (Yocto Project 1.3.1 Reference Distro) 1.3.2 \n \
|
||||
Ubuntu 10.04.4 LTS \n \
|
||||
Ubuntu 11.10 \n \
|
||||
Ubuntu 12.04 LTS \n \
|
||||
|
||||
@@ -47,12 +47,14 @@ distutils_do_install() {
|
||||
|
||||
if test -e ${D}${bindir} ; then
|
||||
for i in ${D}${bindir}/* ; do \
|
||||
sed -i -e s:${STAGING_BINDIR_NATIVE}/python-native/python:${bindir}/env\ python:g $i
|
||||
sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
|
||||
done
|
||||
fi
|
||||
|
||||
if test -e ${D}${sbindir}; then
|
||||
for i in ${D}${sbindir}/* ; do \
|
||||
sed -i -e s:${STAGING_BINDIR_NATIVE}/python-native/python:${bindir}/env\ python:g $i
|
||||
sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
|
||||
done
|
||||
fi
|
||||
|
||||
@@ -529,6 +529,7 @@ kernel_do_deploy() {
|
||||
ln -sf ${KERNEL_IMAGE_BASE_NAME}.bin ${KERNEL_IMAGETYPE}
|
||||
|
||||
cp ${COREBASE}/meta/files/deploydir_readme.txt ${DEPLOYDIR}/README_-_DO_NOT_DELETE_FILES_IN_THIS_DIRECTORY.txt
|
||||
cd -
|
||||
}
|
||||
do_deploy[dirs] = "${DEPLOYDIR} ${B}"
|
||||
|
||||
|
||||
@@ -10,7 +10,9 @@ python multilib_virtclass_handler () {
|
||||
e.data.setVar('STAGING_KERNEL_DIR', e.data.getVar('STAGING_KERNEL_DIR', True))
|
||||
|
||||
# There should only be one kernel in multilib configs
|
||||
if bb.data.inherits_class('kernel', e.data) or bb.data.inherits_class('module-base', e.data):
|
||||
# We also skip multilib setup for module packages.
|
||||
provides = (e.data.getVar("PROVIDES", True) or "").split()
|
||||
if "virtual/kernel" in provides or bb.data.inherits_class('module-base', e.data):
|
||||
raise bb.parse.SkipPackage("We shouldn't have multilib variants for the kernel")
|
||||
|
||||
if bb.data.inherits_class('image', e.data):
|
||||
@@ -75,7 +77,7 @@ python __anonymous () {
|
||||
clsextend.map_depends_variable("DEPENDS")
|
||||
clsextend.map_packagevars()
|
||||
clsextend.map_variable("PROVIDES")
|
||||
clsextend.map_variable("PACKAGES_DYNAMIC")
|
||||
clsextend.map_regexp_variable("PACKAGES_DYNAMIC")
|
||||
clsextend.map_variable("PACKAGE_INSTALL")
|
||||
clsextend.map_variable("INITSCRIPT_PACKAGES")
|
||||
}
|
||||
|
||||
@@ -132,11 +132,20 @@ else
|
||||
target_sdk_dir=$(readlink -m $target_sdk_dir)
|
||||
fi
|
||||
|
||||
printf "You are about to install the SDK to \"$target_sdk_dir\". Proceed[Y/n]?"
|
||||
if [ -e "$target_sdk_dir/environment-setup-${REAL_MULTIMACH_TARGET_SYS}" ]; then
|
||||
echo "The directory \"$target_sdk_dir\" already contains a SDK for this architecture."
|
||||
printf "If you continue, existing files will be overwritten! Proceed[y/N]?"
|
||||
|
||||
default_answer="n"
|
||||
else
|
||||
printf "You are about to install the SDK to \"$target_sdk_dir\". Proceed[Y/n]?"
|
||||
|
||||
default_answer="y"
|
||||
fi
|
||||
read answer
|
||||
|
||||
if [ "$answer" = "" ]; then
|
||||
answer="y"
|
||||
answer="$default_answer"
|
||||
fi
|
||||
|
||||
if [ "$answer" != "Y" -a "$answer" != "y" ]; then
|
||||
@@ -174,9 +183,16 @@ fi
|
||||
# replace ${SDKPATH} with the new prefix in all text files: configs/scripts/etc
|
||||
find $native_sysroot -type f -exec file '{}' \;|grep ":.*ASCII.*text"|cut -d':' -f1|xargs sed -i -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:g"
|
||||
|
||||
# find out all perl scripts in $native_sysroot and modify them replacing the
|
||||
# host perl with SDK perl.
|
||||
for perl_script in $(grep "^#!.*perl" -rls $native_sysroot); do
|
||||
sed -i -e "s:^#! */usr/bin/perl.*:#! /usr/bin/env perl:g" -e \
|
||||
"s: /usr/bin/perl: /usr/bin/env perl:g" $perl_script
|
||||
done
|
||||
|
||||
# change all symlinks pointing to ${SDKPATH}
|
||||
for l in $(find $native_sysroot -type l); do
|
||||
ln -sf $(readlink $l|sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:") $l
|
||||
ln -sfn $(readlink $l|sed -e "s:$DEFAULT_INSTALL_DIR:$target_sdk_dir:") $l
|
||||
done
|
||||
|
||||
echo done
|
||||
@@ -191,6 +207,9 @@ exit 0
|
||||
|
||||
MARKER:
|
||||
EOF
|
||||
# add execution permission
|
||||
chmod +x ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
|
||||
|
||||
# append the SDK tarball
|
||||
cat ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.tar.bz2 >> ${SDK_DEPLOY}/${TOOLCHAIN_OUTPUTNAME}.sh
|
||||
|
||||
|
||||
@@ -14,9 +14,9 @@ do_rootfs[recrdeptask] += "do_package_write_ipk"
|
||||
|
||||
do_rootfs[lockfiles] += "${WORKDIR}/ipk.lock"
|
||||
|
||||
IPKG_ARGS = "-f ${IPKGCONF_TARGET} -o ${IMAGE_ROOTFS} --force-overwrite --prefer-arch-to-version"
|
||||
IPKG_ARGS = "-f ${IPKGCONF_TARGET} -o ${IMAGE_ROOTFS} --force-overwrite --force_postinstall --prefer-arch-to-version"
|
||||
# The _POST version also works when constructing the matching SDK
|
||||
IPKG_ARGS_POST = "-f ${IPKGCONF_TARGET} -o $INSTALL_ROOTFS_IPK --force-overwrite --prefer-arch-to-version"
|
||||
IPKG_ARGS_POST = "-f ${IPKGCONF_TARGET} -o $INSTALL_ROOTFS_IPK --force-overwrite --force_postinstall --prefer-arch-to-version"
|
||||
|
||||
OPKG_PREPROCESS_COMMANDS = "package_update_index_ipk; package_generate_ipkg_conf"
|
||||
|
||||
|
||||
@@ -566,6 +566,7 @@ def check_sanity(sanity_data):
|
||||
if (saved_tmpdir != tmpdir):
|
||||
messages = messages + "Error, TMPDIR has changed location. You need to either move it back to %s or rebuild\n" % saved_tmpdir
|
||||
else:
|
||||
bb.utils.mkdirhier(tmpdir)
|
||||
f = file(checkfile, "w")
|
||||
f.write(tmpdir)
|
||||
f.close()
|
||||
|
||||
@@ -45,6 +45,7 @@ toolchain_create_sdk_env_script () {
|
||||
echo 'export OECORE_ACLOCAL_OPTS="-I ${SDKPATHNATIVE}/usr/share/aclocal"' >> $script
|
||||
echo 'export OECORE_DISTRO_VERSION="${DISTRO_VERSION}"' >> $script
|
||||
echo 'export OECORE_SDK_VERSION="${SDK_VERSION}"' >> $script
|
||||
echo 'export PYTHONHOME=${SDKPATHNATIVE}${prefix_nativesdk}' >> $script
|
||||
}
|
||||
|
||||
# This function creates an environment-setup-script in the TMPDIR which enables
|
||||
@@ -132,6 +133,7 @@ toolchain_create_sdk_env_script_for_installer () {
|
||||
echo 'export OECORE_ACLOCAL_OPTS="-I ${SDKPATHNATIVE}/usr/share/aclocal"' >> $script
|
||||
echo 'export OECORE_DISTRO_VERSION="${DISTRO_VERSION}"' >> $script
|
||||
echo 'export OECORE_SDK_VERSION="${SDK_VERSION}"' >> $script
|
||||
echo 'export PYTHONHOME=${SDKPATHNATIVE}${prefix_nativesdk}' >> $script
|
||||
}
|
||||
|
||||
#we get the cached site config in the runtime
|
||||
|
||||
@@ -5,7 +5,7 @@ class ClassExtender(object):
|
||||
self.pkgs_mapping = []
|
||||
|
||||
def extend_name(self, name):
|
||||
if name.startswith("kernel-module"):
|
||||
if name.startswith("kernel-") or name == "virtual/kernel":
|
||||
return name
|
||||
if name.startswith("rtld"):
|
||||
return name
|
||||
@@ -33,6 +33,24 @@ class ClassExtender(object):
|
||||
self.d.setVar(varname, newdata)
|
||||
return newdata
|
||||
|
||||
def map_regexp_variable(self, varname, setvar = True):
|
||||
var = self.d.getVar(varname, True)
|
||||
if not var:
|
||||
return ""
|
||||
var = var.split()
|
||||
newvar = []
|
||||
for v in var:
|
||||
if v.startswith("^" + self.extname):
|
||||
newvar.append(v)
|
||||
elif v.startswith("^"):
|
||||
newvar.append("^" + self.extname + "-" + v[1:])
|
||||
else:
|
||||
newvar.append(self.extend_name(v))
|
||||
newdata = " ".join(newvar)
|
||||
if setvar:
|
||||
self.d.setVar(varname, newdata)
|
||||
return newdata
|
||||
|
||||
def map_depends(self, dep):
|
||||
if dep.endswith(("-native", "-native-runtime")):
|
||||
return dep
|
||||
@@ -45,11 +63,12 @@ class ClassExtender(object):
|
||||
deps = self.d.getVar(varname, True)
|
||||
if not deps:
|
||||
return
|
||||
deps = bb.utils.explode_deps(deps)
|
||||
newdeps = []
|
||||
deps = bb.utils.explode_dep_versions2(deps)
|
||||
newdeps = {}
|
||||
for dep in deps:
|
||||
newdeps.append(self.map_depends(dep))
|
||||
self.d.setVar(varname, " ".join(newdeps))
|
||||
newdeps[self.map_depends(dep)] = deps[dep]
|
||||
|
||||
self.d.setVar(varname, bb.utils.join_deps(newdeps, False))
|
||||
|
||||
def map_packagevars(self):
|
||||
for pkg in (self.d.getVar("PACKAGES", True).split() + [""]):
|
||||
|
||||
@@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e \
|
||||
file://COPYING.LIB;md5=fb504b67c50331fc78734fed90fb0e09 \
|
||||
file://src/main.c;beginline=1;endline=24;md5=9bc54b93cd7e17bf03f52513f39f926e \
|
||||
file://sbc/sbc.c;beginline=1;endline=25;md5=1a40781ed30d50d8639323a184aeb191"
|
||||
DEPENDS = "udev libusb dbus-glib glib-2.0 libcheck"
|
||||
DEPENDS = "udev libusb dbus-glib glib-2.0 libcheck readline"
|
||||
RDEPENDS_${PN}-dev = "bluez-hcidump"
|
||||
|
||||
PACKAGECONFIG ??= "\
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
Fix CVE-2010-5107 by backporting the relevant changes from upstream CVS.
|
||||
|
||||
http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/servconf.c?r1=1.234#rev1.234
|
||||
http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/sshd_config.5?r1=1.156#rev1.156
|
||||
http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/sshd_config?r1=1.89#rev1.89
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
||||
|
||||
--- a/src/usr.bin/ssh/sshd_config 2012/10/30 22:29:55 1.88
|
||||
+++ b/src/usr.bin/ssh/sshd_config 2013/02/06 00:20:42 1.89
|
||||
@@ -96,7 +96,7 @@ UsePrivilegeSeparation sandbox # Default for new inst
|
||||
#ClientAliveCountMax 3
|
||||
#UseDNS yes
|
||||
#PidFile /var/run/sshd.pid
|
||||
-#MaxStartups 10
|
||||
+#MaxStartups 10:30:100
|
||||
#PermitTunnel no
|
||||
#ChrootDirectory none
|
||||
#VersionAddendum none
|
||||
|
||||
--- a/src/usr.bin/ssh/sshd_config.5 2013/01/18 08:00:49 1.155
|
||||
+++ b/src/usr.bin/ssh/sshd_config.5 2013/02/06 00:20:42 1.156
|
||||
@@ -821,7 +821,7 @@ SSH daemon.
|
||||
Additional connections will be dropped until authentication succeeds or the
|
||||
.Cm LoginGraceTime
|
||||
expires for a connection.
|
||||
-The default is 10.
|
||||
+The default is 10:30:100.
|
||||
.Pp
|
||||
Alternatively, random early drop can be enabled by specifying
|
||||
the three colon separated values
|
||||
|
||||
--- a/src/usr.bin/ssh/servconf.c 2012/12/02 20:46:11 1.233
|
||||
+++ b/src/usr.bin/ssh/servconf.c 2013/02/06 00:20:42 1.234
|
||||
@@ -242,11 +242,11 @@ fill_default_server_options(ServerOptions *options)
|
||||
if (options->gateway_ports == -1)
|
||||
options->gateway_ports = 0;
|
||||
if (options->max_startups == -1)
|
||||
- options->max_startups = 10;
|
||||
+ options->max_startups = 100;
|
||||
if (options->max_startups_rate == -1)
|
||||
- options->max_startups_rate = 100; /* 100% */
|
||||
+ options->max_startups_rate = 30; /* 30% */
|
||||
if (options->max_startups_begin == -1)
|
||||
- options->max_startups_begin = options->max_startups;
|
||||
+ options->max_startups_begin = 10;
|
||||
if (options->max_authtries == -1)
|
||||
options->max_authtries = DEFAULT_AUTH_FAIL_MAX;
|
||||
if (options->max_sessions == -1)
|
||||
@@ -23,7 +23,8 @@ SRC_URI = "ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-${PV}.tar.
|
||||
file://sshd_config \
|
||||
file://ssh_config \
|
||||
file://init \
|
||||
${@base_contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)}"
|
||||
${@base_contains('DISTRO_FEATURES', 'pam', '${PAM_SRC_URI}', '', d)} \
|
||||
file://cve-2010-5107.patch;pnum=4"
|
||||
|
||||
PAM_SRC_URI = "file://sshd"
|
||||
SRC_URI[md5sum] = "3c9347aa67862881c5da3f3b1c08da7b"
|
||||
|
||||
41
meta/recipes-core/console-tools/console-tools-0.3.2/Makevars
Normal file
41
meta/recipes-core/console-tools/console-tools-0.3.2/Makevars
Normal file
@@ -0,0 +1,41 @@
|
||||
# Makefile variables for PO directory in any package using GNU gettext.
|
||||
|
||||
# Usually the message domain is the same as the package name.
|
||||
DOMAIN = $(PACKAGE)
|
||||
|
||||
# These two variables depend on the location of this directory.
|
||||
subdir = po
|
||||
top_builddir = ..
|
||||
|
||||
# These options get passed to xgettext.
|
||||
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
|
||||
|
||||
# This is the copyright holder that gets inserted into the header of the
|
||||
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
|
||||
# package. (Note that the msgstr strings, extracted from the package's
|
||||
# sources, belong to the copyright holder of the package.) Translators are
|
||||
# expected to transfer the copyright for their translations to this person
|
||||
# or entity, or to disclaim their copyright. The empty string stands for
|
||||
# the public domain; in this case the translators are expected to disclaim
|
||||
# their copyright.
|
||||
COPYRIGHT_HOLDER = Free Software Foundation, Inc.
|
||||
|
||||
# This is the email address or URL to which the translators shall report
|
||||
# bugs in the untranslated strings:
|
||||
# - Strings which are not entire sentences, see the maintainer guidelines
|
||||
# in the GNU gettext documentation, section 'Preparing Strings'.
|
||||
# - Strings which use unclear terms or require additional context to be
|
||||
# understood.
|
||||
# - Strings which make invalid assumptions about notation of date, time or
|
||||
# money.
|
||||
# - Pluralisation problems.
|
||||
# - Incorrect English spelling.
|
||||
# - Incorrect formatting.
|
||||
# It can be your email address, or a mailing list address where translators
|
||||
# can write to without being subscribed, or the URL of a web page through
|
||||
# which the translators can contact you.
|
||||
MSGID_BUGS_ADDRESS =
|
||||
|
||||
# This is the list of locale categories, beyond LC_MESSAGES, for which the
|
||||
# message catalogs shall be used. It is usually empty.
|
||||
EXTRA_LOCALE_CATEGORIES =
|
||||
@@ -1,17 +0,0 @@
|
||||
#serial AM1
|
||||
|
||||
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);],
|
||||
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
|
||||
])
|
||||
@@ -1,370 +0,0 @@
|
||||
# Macro to add for using GNU gettext.
|
||||
# Ulrich Drepper <drepper@cygnus.com>, 1995.
|
||||
#
|
||||
# This file can be copied and used freely without restrictions. It can
|
||||
# be used in projects which are not available under the GNU General Public
|
||||
# License or the GNU Library General Public License but which still want
|
||||
# to provide support for the GNU gettext functionality.
|
||||
# Please note that the actual code of the GNU gettext library is covered
|
||||
# by the GNU Library General Public License, and the rest of the GNU
|
||||
# gettext package package is covered by the GNU General Public License.
|
||||
# They are *not* in the public domain.
|
||||
|
||||
# serial 10
|
||||
|
||||
dnl Usage: AM_WITH_NLS([TOOLSYMBOL], [NEEDSYMBOL], [LIBDIR]).
|
||||
dnl If TOOLSYMBOL is specified and is 'use-libtool', then a libtool library
|
||||
dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
|
||||
dnl depending on --{enable,disable}-{shared,static} and on the presence of
|
||||
dnl AM-DISABLE-SHARED). Otherwise, a static library
|
||||
dnl $(top_builddir)/intl/libintl.a will be created.
|
||||
dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
|
||||
dnl implementations (in libc or libintl) without the ngettext() function
|
||||
dnl will be ignored.
|
||||
dnl LIBDIR is used to find the intl libraries. If empty,
|
||||
dnl the value `$(top_builddir)/intl/' is used.
|
||||
dnl
|
||||
dnl The result of the configuration is one of three cases:
|
||||
dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
|
||||
dnl and used.
|
||||
dnl Catalog format: GNU --> install in $(datadir)
|
||||
dnl Catalog extension: .mo after installation, .gmo in source tree
|
||||
dnl 2) GNU gettext has been found in the system's C library.
|
||||
dnl Catalog format: GNU --> install in $(datadir)
|
||||
dnl Catalog extension: .mo after installation, .gmo in source tree
|
||||
dnl 3) No internationalization, always use English msgid.
|
||||
dnl Catalog format: none
|
||||
dnl Catalog extension: none
|
||||
dnl The use of .gmo is historical (it was needed to avoid overwriting the
|
||||
dnl GNU format catalogs when building on a platform with an X/Open gettext),
|
||||
dnl but we keep it in order not to force irrelevant filename changes on the
|
||||
dnl maintainers.
|
||||
dnl
|
||||
AC_DEFUN([AM_WITH_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)
|
||||
|
||||
BUILD_INCLUDED_LIBINTL=no
|
||||
USE_INCLUDED_LIBINTL=no
|
||||
INTLLIBS=
|
||||
|
||||
dnl If we use NLS figure out what method
|
||||
if test "$USE_NLS" = "yes"; then
|
||||
AC_DEFINE(ENABLE_NLS, 1,
|
||||
[Define to 1 if translation of program messages to the user's native language
|
||||
is requested.])
|
||||
AC_MSG_CHECKING([whether included gettext is requested])
|
||||
AC_ARG_WITH(included-gettext,
|
||||
[ --with-included-gettext use the GNU gettext library included here],
|
||||
nls_cv_force_use_gnu_gettext=$withval,
|
||||
nls_cv_force_use_gnu_gettext=no)
|
||||
AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
|
||||
|
||||
nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
|
||||
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
|
||||
dnl User does not insist on using GNU NLS library. Figure out what
|
||||
dnl to use. If GNU gettext is available we use this. Else we have
|
||||
dnl to fall back to GNU NLS library.
|
||||
CATOBJEXT=NONE
|
||||
|
||||
dnl Add a version number to the cache macros.
|
||||
define(gt_cv_func_gnugettext_libc, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libc])
|
||||
define(gt_cv_func_gnugettext_libintl, [gt_cv_func_gnugettext]ifelse([$2], need-ngettext, 2, 1)[_libintl])
|
||||
|
||||
AC_CHECK_HEADER(libintl.h,
|
||||
[AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
|
||||
[AC_TRY_LINK([#include <libintl.h>
|
||||
extern int _nl_msg_cat_cntr;],
|
||||
[bindtextdomain ("", "");
|
||||
return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr],
|
||||
gt_cv_func_gnugettext_libc=yes,
|
||||
gt_cv_func_gnugettext_libc=no)])
|
||||
|
||||
if test "$gt_cv_func_gnugettext_libc" != "yes"; then
|
||||
AC_CACHE_CHECK([for GNU gettext in libintl],
|
||||
gt_cv_func_gnugettext_libintl,
|
||||
[gt_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lintl $LIBICONV"
|
||||
AC_TRY_LINK([#include <libintl.h>
|
||||
extern int _nl_msg_cat_cntr;],
|
||||
[bindtextdomain ("", "");
|
||||
return (int) gettext ("")]ifelse([$2], need-ngettext, [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr],
|
||||
gt_cv_func_gnugettext_libintl=yes,
|
||||
gt_cv_func_gnugettext_libintl=no)
|
||||
LIBS="$gt_save_LIBS"])
|
||||
fi
|
||||
|
||||
dnl If an already present or preinstalled GNU gettext() is found,
|
||||
dnl use it. But if this macro is used in GNU gettext, and GNU
|
||||
dnl gettext is already preinstalled in libintl, we update this
|
||||
dnl libintl. (Cf. the install rule in intl/Makefile.in.)
|
||||
if test "$gt_cv_func_gnugettext_libc" = "yes" \
|
||||
|| { test "$gt_cv_func_gnugettext_libintl" = "yes" \
|
||||
&& test "$PACKAGE" != gettext; }; then
|
||||
AC_DEFINE(HAVE_GETTEXT, 1,
|
||||
[Define if the GNU gettext() function is already present or preinstalled.])
|
||||
|
||||
if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
|
||||
dnl If iconv() is in a separate libiconv library, then anyone
|
||||
dnl linking with libintl{.a,.so} also needs to link with
|
||||
dnl libiconv.
|
||||
INTLLIBS="-lintl $LIBICONV"
|
||||
fi
|
||||
|
||||
gt_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $INTLLIBS"
|
||||
AC_CHECK_FUNCS(dcgettext)
|
||||
LIBS="$gt_save_LIBS"
|
||||
|
||||
dnl Search for GNU msgfmt in the PATH.
|
||||
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
|
||||
[$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :)
|
||||
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
|
||||
|
||||
dnl Search for GNU xgettext in the PATH.
|
||||
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
|
||||
[$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :)
|
||||
|
||||
CATOBJEXT=.gmo
|
||||
fi
|
||||
])
|
||||
|
||||
if test "$CATOBJEXT" = "NONE"; then
|
||||
dnl GNU gettext is not found in the C library.
|
||||
dnl Fall back on GNU gettext library.
|
||||
nls_cv_use_gnu_gettext=yes
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$nls_cv_use_gnu_gettext" = "yes"; then
|
||||
dnl Mark actions used to generate GNU NLS library.
|
||||
INTLOBJS="\$(GETTOBJS)"
|
||||
AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
|
||||
[$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1], :)
|
||||
AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
|
||||
AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
|
||||
[$ac_dir/$ac_word --omit-header /dev/null >/dev/null 2>&1], :)
|
||||
AC_SUBST(MSGFMT)
|
||||
BUILD_INCLUDED_LIBINTL=yes
|
||||
USE_INCLUDED_LIBINTL=yes
|
||||
CATOBJEXT=.gmo
|
||||
INTLLIBS="ifelse([$3],[],\$(top_builddir)/intl,[$3])/libintl.ifelse([$1], use-libtool, [l], [])a $LIBICONV"
|
||||
LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
|
||||
fi
|
||||
|
||||
dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
|
||||
dnl Test whether we really found GNU msgfmt.
|
||||
if test "$GMSGFMT" != ":"; then
|
||||
dnl If it is no GNU msgfmt we define it as : so that the
|
||||
dnl Makefiles still can work.
|
||||
if $GMSGFMT --statistics /dev/null >/dev/null 2>&1; then
|
||||
: ;
|
||||
else
|
||||
AC_MSG_RESULT(
|
||||
[found msgfmt program is not GNU msgfmt; ignore it])
|
||||
GMSGFMT=":"
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
|
||||
dnl Test whether we really found GNU xgettext.
|
||||
if test "$XGETTEXT" != ":"; then
|
||||
dnl If it is no GNU xgettext we define it as : so that the
|
||||
dnl Makefiles still can work.
|
||||
if $XGETTEXT --omit-header /dev/null >/dev/null 2>&1; then
|
||||
: ;
|
||||
else
|
||||
AC_MSG_RESULT(
|
||||
[found xgettext program is not GNU xgettext; ignore it])
|
||||
XGETTEXT=":"
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl We need to process the po/ directory.
|
||||
POSUB=po
|
||||
fi
|
||||
AC_OUTPUT_COMMANDS(
|
||||
[for ac_file in $CONFIG_FILES; do
|
||||
# Support "outfile[:infile[:infile...]]"
|
||||
case "$ac_file" in
|
||||
*:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
|
||||
esac
|
||||
# PO directories have a Makefile.in generated from Makefile.in.in.
|
||||
case "$ac_file" in */Makefile.in)
|
||||
# Adjust a relative srcdir.
|
||||
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
|
||||
ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
|
||||
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
|
||||
# In autoconf-2.13 it is called $ac_given_srcdir.
|
||||
# In autoconf-2.50 it is called $srcdir.
|
||||
test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
|
||||
case "$ac_given_srcdir" in
|
||||
.) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
|
||||
/*) top_srcdir="$ac_given_srcdir" ;;
|
||||
*) top_srcdir="$ac_dots$ac_given_srcdir" ;;
|
||||
esac
|
||||
if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
|
||||
rm -f "$ac_dir/POTFILES"
|
||||
test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
|
||||
sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," -e "\$s/\(.*\) \\\\/\1/" < "$ac_given_srcdir/$ac_dir/POTFILES.in" > "$ac_dir/POTFILES"
|
||||
test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
|
||||
sed -e "/POTFILES =/r $ac_dir/POTFILES" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done])
|
||||
|
||||
|
||||
dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
|
||||
dnl to 'yes' because some of the testsuite requires it.
|
||||
if test "$PACKAGE" = gettext; then
|
||||
BUILD_INCLUDED_LIBINTL=yes
|
||||
fi
|
||||
|
||||
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 These rules are solely for the distribution goal. While doing this
|
||||
dnl we only have to keep exactly one list of the available catalogs
|
||||
dnl in configure.in.
|
||||
for lang in $ALL_LINGUAS; do
|
||||
GMOFILES="$GMOFILES $lang.gmo"
|
||||
POFILES="$POFILES $lang.po"
|
||||
done
|
||||
|
||||
dnl Make all variables we use known to autoconf.
|
||||
AC_SUBST(BUILD_INCLUDED_LIBINTL)
|
||||
AC_SUBST(USE_INCLUDED_LIBINTL)
|
||||
AC_SUBST(CATALOGS)
|
||||
AC_SUBST(CATOBJEXT)
|
||||
AC_SUBST(GMOFILES)
|
||||
AC_SUBST(INTLLIBS)
|
||||
AC_SUBST(INTLOBJS)
|
||||
AC_SUBST(POFILES)
|
||||
AC_SUBST(POSUB)
|
||||
|
||||
dnl For backward compatibility. Some configure.ins may be using this.
|
||||
nls_cv_header_intl=
|
||||
nls_cv_header_libgt=
|
||||
|
||||
dnl For backward compatibility. Some Makefiles may be using this.
|
||||
DATADIRNAME=share
|
||||
AC_SUBST(DATADIRNAME)
|
||||
|
||||
dnl For backward compatibility. Some Makefiles may be using this.
|
||||
INSTOBJEXT=.mo
|
||||
AC_SUBST(INSTOBJEXT)
|
||||
|
||||
dnl For backward compatibility. Some Makefiles may be using this.
|
||||
GENCAT=gencat
|
||||
AC_SUBST(GENCAT)
|
||||
])
|
||||
|
||||
dnl Usage: Just like AM_WITH_NLS, which see.
|
||||
AC_DEFUN([AM_GNU_GETTEXT],
|
||||
[AC_REQUIRE([AC_PROG_MAKE_SET])dnl
|
||||
AC_REQUIRE([AC_PROG_CC])dnl
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
AC_REQUIRE([AC_PROG_RANLIB])dnl
|
||||
AC_REQUIRE([AC_ISC_POSIX])dnl
|
||||
AC_REQUIRE([AC_HEADER_STDC])dnl
|
||||
AC_REQUIRE([AC_C_CONST])dnl
|
||||
AC_REQUIRE([AC_C_INLINE])dnl
|
||||
AC_REQUIRE([AC_TYPE_OFF_T])dnl
|
||||
AC_REQUIRE([AC_TYPE_SIZE_T])dnl
|
||||
AC_REQUIRE([AC_FUNC_ALLOCA])dnl
|
||||
AC_REQUIRE([AC_FUNC_MMAP])dnl
|
||||
AC_REQUIRE([jm_GLIBC21])dnl
|
||||
|
||||
AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
|
||||
stdlib.h string.h unistd.h sys/param.h])
|
||||
AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getcwd getegid geteuid \
|
||||
getgid getuid mempcpy munmap putenv setenv setlocale stpcpy strchr strcasecmp \
|
||||
strdup strtoul tsearch __argz_count __argz_stringify __argz_next])
|
||||
|
||||
AM_ICONV
|
||||
AM_LANGINFO_CODESET
|
||||
AM_LC_MESSAGES
|
||||
AM_WITH_NLS([$1],[$2],[$3])
|
||||
|
||||
if test "x$CATOBJEXT" != "x"; then
|
||||
if test "x$ALL_LINGUAS" = "x"; then
|
||||
LINGUAS=
|
||||
else
|
||||
AC_MSG_CHECKING(for catalogs to be installed)
|
||||
NEW_LINGUAS=
|
||||
for presentlang in $ALL_LINGUAS; do
|
||||
useit=no
|
||||
for desiredlang in ${LINGUAS-$ALL_LINGUAS}; do
|
||||
# Use the presentlang catalog if desiredlang is
|
||||
# a. equal to presentlang, or
|
||||
# b. a variant of presentlang (because in this case,
|
||||
# presentlang can be used as a fallback for messages
|
||||
# which are not translated in the desiredlang catalog).
|
||||
case "$desiredlang" in
|
||||
"$presentlang"*) useit=yes;;
|
||||
esac
|
||||
done
|
||||
if test $useit = yes; then
|
||||
NEW_LINGUAS="$NEW_LINGUAS $presentlang"
|
||||
fi
|
||||
done
|
||||
LINGUAS=$NEW_LINGUAS
|
||||
AC_MSG_RESULT($LINGUAS)
|
||||
fi
|
||||
|
||||
dnl Construct list of names of catalog files to be constructed.
|
||||
if test -n "$LINGUAS"; then
|
||||
for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
|
||||
fi
|
||||
fi
|
||||
|
||||
dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
|
||||
dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
|
||||
dnl Try to locate is.
|
||||
MKINSTALLDIRS=
|
||||
if test -n "$ac_aux_dir"; then
|
||||
MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
|
||||
fi
|
||||
if test -z "$MKINSTALLDIRS"; then
|
||||
MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
|
||||
fi
|
||||
AC_SUBST(MKINSTALLDIRS)
|
||||
|
||||
dnl Enable libtool support if the surrounding package wishes it.
|
||||
INTL_LIBTOOL_SUFFIX_PREFIX=ifelse([$1], use-libtool, [l], [])
|
||||
AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
|
||||
])
|
||||
@@ -1,26 +0,0 @@
|
||||
#serial 2
|
||||
|
||||
# Test for the GNU C Library, version 2.1 or newer.
|
||||
# From Bruno Haible.
|
||||
|
||||
AC_DEFUN([jm_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,69 +0,0 @@
|
||||
#serial AM2
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_DEFUN([AM_ICONV],
|
||||
[
|
||||
dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
|
||||
dnl those with the standalone portable GNU libiconv installed).
|
||||
|
||||
AC_ARG_WITH([libiconv-prefix],
|
||||
[ --with-libiconv-prefix=DIR search for libiconv in DIR/include and DIR/lib], [
|
||||
for dir in `echo "$withval" | tr : ' '`; do
|
||||
if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi
|
||||
if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi
|
||||
done
|
||||
])
|
||||
|
||||
AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
|
||||
am_cv_func_iconv="no, consider installing GNU libiconv"
|
||||
am_cv_lib_iconv=no
|
||||
AC_TRY_LINK([#include <stdlib.h>
|
||||
#include <iconv.h>],
|
||||
[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);],
|
||||
am_cv_func_iconv=yes)
|
||||
if test "$am_cv_func_iconv" != yes; then
|
||||
am_save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -liconv"
|
||||
AC_TRY_LINK([#include <stdlib.h>
|
||||
#include <iconv.h>],
|
||||
[iconv_t cd = iconv_open("","");
|
||||
iconv(cd,NULL,NULL,NULL,NULL);
|
||||
iconv_close(cd);],
|
||||
am_cv_lib_iconv=yes
|
||||
am_cv_func_iconv=yes)
|
||||
LIBS="$am_save_LIBS"
|
||||
fi
|
||||
])
|
||||
if test "$am_cv_func_iconv" = yes; then
|
||||
AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
|
||||
AC_MSG_CHECKING([for iconv declaration])
|
||||
AC_CACHE_VAL(am_cv_proto_iconv, [
|
||||
AC_TRY_COMPILE([
|
||||
#include <stdlib.h>
|
||||
#include <iconv.h>
|
||||
extern
|
||||
#ifdef __cplusplus
|
||||
"C"
|
||||
#endif
|
||||
#if defined(__STDC__) || defined(__cplusplus)
|
||||
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
|
||||
#else
|
||||
size_t iconv();
|
||||
#endif
|
||||
], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
|
||||
am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
|
||||
am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
|
||||
AC_MSG_RESULT([$]{ac_t:-
|
||||
}[$]am_cv_proto_iconv)
|
||||
AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
|
||||
[Define as const if the declaration of iconv() needs const.])
|
||||
fi
|
||||
LIBICONV=
|
||||
if test "$am_cv_lib_iconv" = yes; then
|
||||
LIBICONV="-liconv"
|
||||
fi
|
||||
AC_SUBST(LIBICONV)
|
||||
])
|
||||
@@ -1,51 +0,0 @@
|
||||
# Search path for a program which passes the given test.
|
||||
# Ulrich Drepper <drepper@cygnus.com>, 1996.
|
||||
#
|
||||
# This file can be copied and used freely without restrictions. It can
|
||||
# be used in projects which are not available under the GNU General Public
|
||||
# License or the GNU Library General Public License but which still want
|
||||
# to provide support for the GNU gettext functionality.
|
||||
# Please note that the actual code of the GNU gettext library is covered
|
||||
# by the GNU Library General Public License, and the rest of the GNU
|
||||
# gettext package package is covered by the GNU General Public License.
|
||||
# They are *not* in the public domain.
|
||||
|
||||
# serial 2
|
||||
|
||||
dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
|
||||
dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
|
||||
AC_DEFUN([AM_PATH_PROG_WITH_TEST],
|
||||
[# Extract the first word of "$2", so it can be a program name with args.
|
||||
set dummy $2; ac_word=[$]2
|
||||
AC_MSG_CHECKING([for $ac_word])
|
||||
AC_CACHE_VAL(ac_cv_path_$1,
|
||||
[case "[$]$1" in
|
||||
/*)
|
||||
ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
|
||||
for ac_dir in ifelse([$5], , $PATH, [$5]); do
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
if test -f $ac_dir/$ac_word; then
|
||||
if [$3]; then
|
||||
ac_cv_path_$1="$ac_dir/$ac_word"
|
||||
break
|
||||
fi
|
||||
fi
|
||||
done
|
||||
IFS="$ac_save_ifs"
|
||||
dnl If no 4th arg is given, leave the cache variable unset,
|
||||
dnl so AC_PATH_PROGS will keep looking.
|
||||
ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
|
||||
])dnl
|
||||
;;
|
||||
esac])dnl
|
||||
$1="$ac_cv_path_$1"
|
||||
if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
|
||||
AC_MSG_RESULT([$]$1)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
AC_SUBST($1)dnl
|
||||
])
|
||||
@@ -1,9 +1,5 @@
|
||||
Upstream-Status: Pending
|
||||
|
||||
#
|
||||
# Patch managed by http://www.mn-logistik.de/unsupported/pxa250/patcher
|
||||
#
|
||||
|
||||
--- console-tools-0.3.2/configure.in~configure
|
||||
+++ console-tools-0.3.2/configure.in
|
||||
@@ -2,13 +2,14 @@
|
||||
@@ -23,25 +19,11 @@ Upstream-Status: Pending
|
||||
AM_INIT_AUTOMAKE(console-tools, 0.3.2)
|
||||
|
||||
# Defaults
|
||||
@@ -25,7 +26,7 @@
|
||||
@@ -25,7 +26,6 @@
|
||||
# i18n stuff
|
||||
ALL_LINGUAS="cs de ru ga fr"
|
||||
AM_GNU_GETTEXT
|
||||
-AC_OUTPUT_COMMANDS([sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile])
|
||||
+AC_CONFIG_COMMANDS([default-1],[[sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile]],[[]])
|
||||
|
||||
AC_DEFINE_UNQUOTED(LOCALEDIR, "/usr/share/locale")
|
||||
|
||||
@@ -172,10 +173,11 @@
|
||||
AC_SUBST(CHARMAPDIR)
|
||||
|
||||
# Output
|
||||
-AC_OUTPUT([Makefile lib/Makefile lib/console/Makefile lib/cfont/Makefile
|
||||
+AC_CONFIG_FILES([Makefile lib/Makefile lib/console/Makefile lib/cfont/Makefile
|
||||
lib/ctutils/Makefile lib/ctlocal/Makefile lib/generic/Makefile
|
||||
fontfiletools/Makefile vttools/Makefile
|
||||
kbdtools/Makefile screenfonttools/Makefile contrib/Makefile
|
||||
include/Makefile include/lct/Makefile compat/Makefile
|
||||
doc/Makefile doc/man/Makefile examples/Makefile
|
||||
po/Makefile.in intl/Makefile])
|
||||
+AC_OUTPUT
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
Fix the following error detected with i586-pokymllib32-linux-gcc (the
|
||||
multilib x86-64 lib32 compiler):
|
||||
../lib/ctutils/.libs/libctutils.so: undefined reference to `get_kernel_sfm'
|
||||
collect2: error: ld returned 1 exit status
|
||||
|
||||
It seems that libctutils.so (the library that uses get_kernel_sfm) must
|
||||
be stated before libconsole.so (the library that exports the function) when
|
||||
using multilib gcc
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Constantin Musca <constantinx.musca@intel.com>
|
||||
|
||||
Index: console-tools-0.3.2/fontfiletools/Makefile.am
|
||||
===================================================================
|
||||
--- console-tools-0.3.2.orig/fontfiletools/Makefile.am
|
||||
+++ console-tools-0.3.2/fontfiletools/Makefile.am
|
||||
@@ -10,5 +10,5 @@ EXTRA_DIST = fonts2virfont.c virfont.h
|
||||
|
||||
# libconsole is needed by ctutils
|
||||
LDADD = ../lib/ctlocal/libctlocal.a ../lib/cfont/libcfont.la \
|
||||
- ../lib/console/libconsole.la \
|
||||
- ../lib/ctutils/libctutils.la ../lib/generic/libctgeneric.la
|
||||
+ ../lib/ctutils/libctutils.la \
|
||||
+ ../lib/console/libconsole.la ../lib/generic/libctgeneric.la
|
||||
Index: console-tools-0.3.2/vttools/Makefile.am
|
||||
===================================================================
|
||||
--- console-tools-0.3.2.orig/vttools/Makefile.am
|
||||
+++ console-tools-0.3.2/vttools/Makefile.am
|
||||
@@ -7,9 +7,9 @@ bin_PROGRAMS = chvt deallocvt writevt fg
|
||||
vcstime vt-is-UTF8 openvt @RESIZECONS@
|
||||
EXTRA_PROGRAMS = resizecons
|
||||
|
||||
-LDADD = ../lib/ctlocal/libctlocal.a ../lib/console/libconsole.la \
|
||||
+LDADD = ../lib/ctlocal/libctlocal.a ../lib/ctutils/libctutils.la \
|
||||
../lib/cfont/libcfont.la \
|
||||
- ../lib/ctutils/libctutils.la ../lib/generic/libctgeneric.la
|
||||
+ ../lib/console/libconsole.la ../lib/generic/libctgeneric.la
|
||||
|
||||
vcstime_LDADD = ../lib/ctlocal/libctlocal.a
|
||||
screendump_LDADD = ../lib/ctlocal/libctlocal.a
|
||||
Index: console-tools-0.3.2/kbdtools/Makefile.am
|
||||
===================================================================
|
||||
--- console-tools-0.3.2.orig/kbdtools/Makefile.am
|
||||
+++ console-tools-0.3.2/kbdtools/Makefile.am
|
||||
@@ -15,9 +15,9 @@ EXTRA_PROGRAMS = getkeycodes setkeycodes
|
||||
loadkeys_SOURCES = loadkeys.y analyze.l
|
||||
|
||||
YFLAGS = -d
|
||||
-LDADD = ../lib/ctlocal/libctlocal.a ../lib/console/libconsole.la \
|
||||
+LDADD = ../lib/ctlocal/libctlocal.a ../lib/ctutils/libctutils.la \
|
||||
../lib/cfont/libcfont.la \
|
||||
- ../lib/ctutils/libctutils.la ../lib/generic/libctgeneric.la
|
||||
+ ../lib/console/libconsole.la ../lib/generic/libctgeneric.la
|
||||
|
||||
loadkeys_LDADD = $(LDADD) @LEXLIB@
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
The docs need tools we don't have to build so disable them.
|
||||
|
||||
Also remove intl since the Makefile doesn't work with 3.82 and we
|
||||
don't want to build libintl anyway.
|
||||
|
||||
Upstream-Status: Inappropriate [configuration]
|
||||
RP 2012/10/17
|
||||
|
||||
Index: console-tools-0.3.2/Makefile.am
|
||||
===================================================================
|
||||
--- console-tools-0.3.2.orig/Makefile.am 1999-04-15 01:33:24.000000000 +0000
|
||||
+++ console-tools-0.3.2/Makefile.am 2012-10-17 11:48:14.107069145 +0000
|
||||
@@ -1,7 +1,7 @@
|
||||
# -*- makefile -*-
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
-SUBDIRS = lib fontfiletools vttools kbdtools screenfonttools contrib doc \
|
||||
- compat include examples po intl
|
||||
+SUBDIRS = lib fontfiletools vttools kbdtools screenfonttools contrib \
|
||||
+ compat include examples po
|
||||
|
||||
EXTRA_DIST = BUGS RELEASE CREDITS COPYING.kbd local-scripts/* debian/* *.lsm
|
||||
@@ -3,7 +3,7 @@ LICENSE = "GPLv2"
|
||||
LIC_FILES_CHKSUM = "file://COPYING.kbd;md5=9b2d91511d3d80d4d20ac6e6b0137fe9"
|
||||
SUMMARY = "Allows you to set-up and manipulate the Linux console."
|
||||
DESCRIPTION = "Provides tools that enable the set-up and manipulation of the linux console and console-font files."
|
||||
PR = "r6"
|
||||
PR = "r8"
|
||||
|
||||
SRC_URI = "${SOURCEFORGE_MIRROR}/lct/console-tools-${PV}.tar.gz \
|
||||
file://codepage.patch \
|
||||
@@ -11,23 +11,19 @@ SRC_URI = "${SOURCEFORGE_MIRROR}/lct/console-tools-${PV}.tar.gz \
|
||||
file://compile.patch \
|
||||
file://kbdrate.patch \
|
||||
file://uclibc-fileno.patch \
|
||||
file://config"
|
||||
file://nodocs.patch \
|
||||
file://fix-libconsole-linking.patch \
|
||||
file://lcmessage.m4 \
|
||||
file://Makevars"
|
||||
|
||||
SRC_URI[md5sum] = "bf21564fc38b3af853ef724babddbacd"
|
||||
SRC_URI[sha256sum] = "eea6b441672dacd251079fc85ed322e196282e0e66c16303ec64c3a2b1c126c2"
|
||||
|
||||
export SUBDIRS = "fontfiletools vttools kbdtools screenfonttools contrib \
|
||||
examples po intl compat"
|
||||
|
||||
acpaths = "-I config"
|
||||
do_configure_prepend () {
|
||||
mkdir -p config
|
||||
cp ${WORKDIR}/config/*.m4 config/
|
||||
}
|
||||
|
||||
do_compile () {
|
||||
oe_runmake -C lib
|
||||
oe_runmake 'SUBDIRS=${SUBDIRS}'
|
||||
mkdir -p ${S}/m4
|
||||
cp ${WORKDIR}/lcmessage.m4 ${S}/m4/
|
||||
rm -f ${S}/acinclude.m4
|
||||
cp ${WORKDIR}/Makevars ${S}/po/
|
||||
}
|
||||
|
||||
inherit autotools gettext update-alternatives
|
||||
|
||||
@@ -6,7 +6,7 @@ LIC_FILES_CHKSUM = "file://ncurses/base/version.c;beginline=1;endline=27;md5=cbc
|
||||
SECTION = "libs"
|
||||
DEPENDS = "ncurses-native"
|
||||
DEPENDS_virtclass-native = ""
|
||||
INC_PR = "r11"
|
||||
INC_PR = "r13"
|
||||
|
||||
inherit autotools binconfig multilib_header
|
||||
|
||||
@@ -29,6 +29,56 @@ BUILD_CPPFLAGS += "-D_GNU_SOURCE"
|
||||
# natives don't generally look in base_libdir
|
||||
base_libdir_virtclass-native = "${libdir}"
|
||||
|
||||
# Display corruption occurs on 64 bit hosts without these settings
|
||||
# This was derrived from the upstream debian ncurses which uses
|
||||
# these settings for 32 and 64 bit hosts.
|
||||
EXCONFIG_ARGS = ""
|
||||
EXCONFIG_ARGS_virtclass-native = " \
|
||||
--disable-lp64 \
|
||||
--with-chtype='long' \
|
||||
--with-mmask-t='long'"
|
||||
EXCONFIG_ARGS_virtclass-nativesdk = " \
|
||||
--disable-lp64 \
|
||||
--with-chtype='long' \
|
||||
--with-mmask-t='long'"
|
||||
|
||||
# Fall back to the host termcap / terminfo for -nativesdk and -native
|
||||
# The reality is a work around for strange problems with things like
|
||||
# "bitbake -c menuconfig busybox" where it cannot find the terminfo
|
||||
# because the sstate had a hard coded search path. Until this is fixed
|
||||
# another way this is deemed good enough.
|
||||
EX_TERMCAP = ""
|
||||
EX_TERMCAP_virtclass-native = ":/etc/termcap:/usr/share/misc/termcap"
|
||||
EX_TERMCAP_virtclass-nativesdk = ":/etc/termcap:/usr/share/misc/termcap"
|
||||
EX_TERMINFO = ""
|
||||
EX_TERMINFO_virtclass-native = ":/etc/terminfo:/usr/share/misc/terminfo:/lib/terminfo"
|
||||
EX_TERMINFO_virtclass-nativesdk = ":/etc/terminfo:/usr/share/misc/terminfo:/lib/terminfo"
|
||||
|
||||
# Display corruption occurs on 64 bit hosts without these settings
|
||||
# This was derrived from the upstream debian ncurses which uses
|
||||
# these settings for 32 and 64 bit hosts.
|
||||
EXCONFIG_ARGS = ""
|
||||
EXCONFIG_ARGS_virtclass-native = " \
|
||||
--disable-lp64 \
|
||||
--with-chtype='long' \
|
||||
--with-mmask-t='long'"
|
||||
EXCONFIG_ARGS_virtclass-nativesdk = " \
|
||||
--disable-lp64 \
|
||||
--with-chtype='long' \
|
||||
--with-mmask-t='long'"
|
||||
|
||||
# Fall back to the host termcap / terminfo for -nativesdk and -native
|
||||
# The reality is a work around for strange problems with things like
|
||||
# "bitbake -c menuconfig busybox" where it cannot find the terminfo
|
||||
# because the sstate had a hard coded search path. Until this is fixed
|
||||
# another way this is deemed good enough.
|
||||
EX_TERMCAP = ""
|
||||
EX_TERMCAP_virtclass-native = ":/etc/termcap:/usr/share/misc/termcap"
|
||||
EX_TERMCAP_virtclass-nativesdk = ":/etc/termcap:/usr/share/misc/termcap"
|
||||
EX_TERMINFO = ""
|
||||
EX_TERMINFO_virtclass-native = ":/etc/terminfo:/usr/share/misc/terminfo:/lib/terminfo"
|
||||
EX_TERMINFO_virtclass-nativesdk = ":/etc/terminfo:/usr/share/misc/terminfo:/lib/terminfo"
|
||||
|
||||
# Helper function for do_configure to allow multiple configurations
|
||||
# $1 the directory to run configure in
|
||||
# $@ the arguments to pass to configure
|
||||
@@ -44,8 +94,8 @@ ncurses_configure() {
|
||||
--enable-hard-tabs \
|
||||
--enable-xmc-glitch \
|
||||
--enable-colorfgbg \
|
||||
--with-termpath='${sysconfdir}/termcap:${datadir}/misc/termcap' \
|
||||
--with-terminfo-dirs='${sysconfdir}/terminfo:${datadir}/terminfo' \
|
||||
--with-termpath='${sysconfdir}/termcap:${datadir}/misc/termcap${EX_TERMCAP}' \
|
||||
--with-terminfo-dirs='${sysconfdir}/terminfo:${datadir}/terminfo${EX_TERMINFO}' \
|
||||
--with-shared \
|
||||
--disable-big-core \
|
||||
--program-prefix= \
|
||||
@@ -54,6 +104,7 @@ ncurses_configure() {
|
||||
--enable-sigwinch \
|
||||
--enable-pc-files \
|
||||
--disable-rpath-hack \
|
||||
${EXCONFIG_ARGS} \
|
||||
--with-manpage-format=normal \
|
||||
"$@" || return 1
|
||||
cd ..
|
||||
@@ -218,7 +269,7 @@ inherit update-alternatives
|
||||
|
||||
ALTERNATIVE_PRIORITY = "100"
|
||||
|
||||
ALTERNATIVE_ncurses-tools = "clear reset"
|
||||
ALTERNATIVE_ncurses-tools_class-target = "clear reset"
|
||||
|
||||
BBCLASSEXTEND = "native nativesdk"
|
||||
|
||||
|
||||
@@ -21,6 +21,11 @@ automount() {
|
||||
name="`basename "$DEVNAME"`"
|
||||
|
||||
! test -d "/media/$name" && mkdir -p "/media/$name"
|
||||
# Silent util-linux's version of mounting auto
|
||||
if [ "x`readlink $MOUNT`" = "x/bin/mount.util-linux" ] ;
|
||||
then
|
||||
MOUNT="$MOUNT -o silent"
|
||||
fi
|
||||
|
||||
if ! $MOUNT -t auto $DEVNAME "/media/$name"
|
||||
then
|
||||
|
||||
@@ -7,7 +7,7 @@ SECTION = "base"
|
||||
|
||||
LICENSE = "GPLv2+ & LGPLv2.1+ & BSD"
|
||||
|
||||
LIC_FILES_CHKSUM = "file://README.licensing;md5=9c920d811858a74b67a36ba23cbaa95f \
|
||||
LIC_FILES_CHKSUM = "file://README.licensing;md5=679af3e410ee112a5ec94de6501bf5c3 \
|
||||
file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552 \
|
||||
file://Documentation/licenses/COPYING.GPLv2;md5=8ca43cbc842c2336e835926c2166c28b \
|
||||
file://Documentation/licenses/COPYING.LGPLv2.1;md5=bbb461211a33b134d42ed5ee802b37ff \
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Saul Wold <sgw@linux.intel.com>
|
||||
|
||||
Notes from Pdraig (via email) :
|
||||
|
||||
Actually LGPLv2+ is most appropriate for that.
|
||||
The intent is that it's licensed under the LGPL anyway:
|
||||
|
||||
$ gnulib/gnulib-tool --local-dir gl --extract-license mbsalign
|
||||
LGPL
|
||||
|
||||
When extracting this to util-linux I should have adjusted
|
||||
the boilerplate default license in the file (which gnulib-tool
|
||||
can do on import).
|
||||
|
||||
|
||||
From 16d8546964db1f6a27ae0f1d1cd24ce42704111d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
|
||||
Date: Fri, 15 Mar 2013 09:48:37 +0000
|
||||
Subject: [PATCH] lib/mbsalign: correct license header from GPLv[23] to
|
||||
LGPLv2+
|
||||
|
||||
* lib/mbsalign.c: s/GPLv3/LGPLv2+/
|
||||
* include/mbsalign.h: s/GPLv2/LGPLv2+/
|
||||
* README.licensing: Remove mention GPLv3 as it's not actually used.
|
||||
---
|
||||
README.licensing | 2 --
|
||||
include/mbsalign.h | 4 ++--
|
||||
lib/mbsalign.c | 4 ++--
|
||||
3 files changed, 4 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/README.licensing b/README.licensing
|
||||
index b29883c..ab60004 100644
|
||||
--- a/README.licensing
|
||||
+++ b/README.licensing
|
||||
@@ -2,8 +2,6 @@
|
||||
The project util-linux doesn't use the same license for all of the code.
|
||||
There is code under:
|
||||
|
||||
- * GPLv3+ (GNU General Public License version 3, or any later version)
|
||||
-
|
||||
* GPLv2+ (GNU General Public License version 2, or any later version)
|
||||
|
||||
* GPLv2 (GNU General Public License version 2)
|
||||
diff --git a/include/mbsalign.h b/include/mbsalign.h
|
||||
index fd957b3..8c9f2db 100644
|
||||
--- a/include/mbsalign.h
|
||||
+++ b/include/mbsalign.h
|
||||
@@ -2,8 +2,8 @@
|
||||
Copyright (C) 2009-2010 Free Software Foundation, Inc.
|
||||
|
||||
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
|
||||
+ it under the terms of the GNU Lesser General Public License as published by
|
||||
+ the Free Software Foundation, either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
diff --git a/lib/mbsalign.c b/lib/mbsalign.c
|
||||
index d97bbd5..05c4650 100644
|
||||
--- a/lib/mbsalign.c
|
||||
+++ b/lib/mbsalign.c
|
||||
@@ -2,8 +2,8 @@
|
||||
Copyright (C) 2009-2010 Free Software Foundation, Inc.
|
||||
|
||||
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 3 of the License, or
|
||||
+ it under the terms of the GNU Lesser General Public License as published by
|
||||
+ the Free Software Foundation, either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
--
|
||||
1.7.7.6
|
||||
|
||||
@@ -2,41 +2,15 @@ MAJOR_VERSION = "2.21"
|
||||
PR = "r5"
|
||||
require util-linux.inc
|
||||
|
||||
# note that `lscpu' is under GPLv3+
|
||||
LICENSE_${PN}-lscpu = "GPLv3+"
|
||||
|
||||
SRC_URI += "file://util-linux-ng-replace-siginterrupt.patch \
|
||||
file://util-linux-ng-2.16-mount_lock_path.patch \
|
||||
file://uclibc-__progname-conflict.patch \
|
||||
file://configure-sbindir.patch \
|
||||
file://configure-sbindir.patch \
|
||||
file://mbsalign-license.patch \
|
||||
"
|
||||
|
||||
SRC_URI[md5sum] = "b75b3cfecb943f74338382fde693c2c3"
|
||||
SRC_URI[sha256sum] = "066f9d8e51bfabd809d266edcd54eefba1cdca57725b95c074fd47fe6fba3d30"
|
||||
|
||||
# Only lscpu part is gplv3; rest of the code is not,
|
||||
# so take out the lscpu parts while running non-gplv3 build.
|
||||
# The removal of the package should now occur during
|
||||
# the build if INCOMPATIBLE_LICENSE is set to GPLv3
|
||||
|
||||
python () {
|
||||
d.setVar("REMOVELSCPU", "no")
|
||||
if (d.getVar("INCOMPATIBLE_LICENSE", True) or "").find("GPLv3") != -1:
|
||||
# avoid GPLv3
|
||||
d.setVar("REMOVELSCPU", "yes")
|
||||
src_uri = (d.getVar("SRC_URI", False) or "").split()
|
||||
src_uri.append("file://remove-lscpu.patch")
|
||||
d.setVar("SRC_URI", " ".join(src_uri))
|
||||
}
|
||||
|
||||
do_remove_lscpu() {
|
||||
if [ "x${REMOVELSCPU}" = "xyes" ]; then
|
||||
rm -f sys-utils/lscpu.c sys-utils/lscpu.1
|
||||
rm -rf tests/ts/lscpu tests/expected/lscpu
|
||||
fi
|
||||
}
|
||||
|
||||
addtask remove_lscpu before do_configure after do_patch
|
||||
|
||||
CACHED_CONFIGUREVARS += "scanf_cv_alloc_modifier=as"
|
||||
EXTRA_OECONF_virtclass-native += "--disable-fallocate --disable-use-tty-group"
|
||||
|
||||
@@ -8,9 +8,23 @@ SECTION = "devel"
|
||||
DEPENDS += "m4-native"
|
||||
DEPENDS_virtclass-native = "m4-native gnu-config-native"
|
||||
DEPENDS_virtclass-nativesdk = "nativesdk-m4 nativesdk-gnu-config"
|
||||
RDEPENDS_${PN} = "m4 gnu-config"
|
||||
RDEPENDS_${PN} = "m4 gnu-config \
|
||||
perl \
|
||||
perl-module-carp \
|
||||
perl-module-constant \
|
||||
perl-module-errno \
|
||||
perl-module-exporter \
|
||||
perl-module-file-basename \
|
||||
perl-module-file-compare \
|
||||
perl-module-file-copy \
|
||||
perl-module-file-glob \
|
||||
perl-module-file-path \
|
||||
perl-module-file-stat \
|
||||
perl-module-getopt-long \
|
||||
perl-module-io-file \
|
||||
perl-module-posix \
|
||||
"
|
||||
RDEPENDS_${PN}_virtclass-native = "m4-native gnu-config-native"
|
||||
RDEPENDS_${PN}_virtclass-nativesdk = "nativesdk-m4 nativesdk-gnu-config"
|
||||
|
||||
SRC_URI = "${GNU_MIRROR}/autoconf/autoconf-${PV}.tar.gz \
|
||||
file://program_prefix.patch"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
require autoconf.inc
|
||||
|
||||
PR = "r9"
|
||||
PR = "r10"
|
||||
|
||||
PARALLEL_MAKE = ""
|
||||
|
||||
|
||||
@@ -7,28 +7,14 @@ RDEPENDS_${PN} += "\
|
||||
autoconf \
|
||||
perl \
|
||||
perl-module-bytes \
|
||||
perl-module-constant \
|
||||
perl-module-cwd \
|
||||
perl-module-data-dumper \
|
||||
perl-module-dynaloader \
|
||||
perl-module-errno \
|
||||
perl-module-exporter-heavy \
|
||||
perl-module-file-basename \
|
||||
perl-module-file-compare \
|
||||
perl-module-file-copy \
|
||||
perl-module-file-glob \
|
||||
perl-module-file-spec-unix \
|
||||
perl-module-file-stat \
|
||||
perl-module-getopt-long \
|
||||
perl-module-io \
|
||||
perl-module-io-file \
|
||||
perl-module-posix \
|
||||
perl-module-strict \
|
||||
perl-module-text-parsewords \
|
||||
perl-module-thread-queue \
|
||||
perl-module-threads \
|
||||
perl-module-vars "
|
||||
|
||||
RDEPENDS_${PN}_virtclass-native = "autoconf-native perl-native-runtime"
|
||||
RDEPENDS_${PN}_virtclass-nativesdk = "nativesdk-autoconf"
|
||||
|
||||
PATHFIXPATCH = "file://path_prog_fixes.patch"
|
||||
PATHFIXPATCH_virtclass-native = ""
|
||||
@@ -42,7 +28,7 @@ SRC_URI += "${PATHFIXPATCH} \
|
||||
SRC_URI[md5sum] = "d2af8484de94cdee16d89c50aaa1c729"
|
||||
SRC_URI[sha256sum] = "095ffaa3ac887d1eb3511bf13d7f1fc9ec0503c6a06aeae05c93730cdda9a5a0"
|
||||
|
||||
PR = "r1"
|
||||
PR = "r2"
|
||||
|
||||
do_install () {
|
||||
oe_runmake 'DESTDIR=${D}' install
|
||||
|
||||
@@ -30,7 +30,7 @@ ALLOW_EMPTY = "1"
|
||||
|
||||
PACKAGES = ""
|
||||
|
||||
PR = "r11"
|
||||
PR = "r12"
|
||||
|
||||
ADT_DEPLOY = "${TMPDIR}/deploy/sdk/"
|
||||
ADT_DIR = "${WORKDIR}/adt-installer/"
|
||||
@@ -65,6 +65,7 @@ fakeroot do_populate_adt () {
|
||||
sed -i -e 's#ADTREPO_URL#${ADTREPO}#' ${ADT_DIR}/opkg/conf/*.conf
|
||||
cp -r trunk ${ADT_DIR}/opkg/build/
|
||||
mv ${ADT_DIR}/opkg/build/trunk ${ADT_DIR}/opkg/build/opkg-svn
|
||||
rm -rf ${ADT_DIR}/opkg/build/opkg-svn/patches ${ADT_DIR}/opkg/build/opkg-svn/.pc
|
||||
cp -r scripts ${ADT_DIR}/
|
||||
cp adt_installer ${ADT_DIR}
|
||||
cp adt_installer.conf ${ADT_DIR}
|
||||
|
||||
@@ -25,6 +25,9 @@ SRC_URI = "${GNU_MIRROR}/libtool/libtool-${PV}.tar.gz \
|
||||
SRC_URI[md5sum] = "d2f3b7d4627e69e13514a40e72a24d50"
|
||||
SRC_URI[sha256sum] = "b38de44862a987293cd3d8dfae1c409d514b6c4e794ebc93648febf9afc38918"
|
||||
|
||||
# Don't want paths to sed-native (or anything else) encoded
|
||||
CACHED_CONFIGUREVARS += "ac_cv_path_SED=sed"
|
||||
|
||||
do_compile_prepend () {
|
||||
# Sometimes this file doesn't get rebuilt, force the issue
|
||||
rm -f ${S}/libltdl/config/ltmain.sh
|
||||
|
||||
71
meta/recipes-devtools/perl/perl-5.14.2/cve-2012-6329.patch
Normal file
71
meta/recipes-devtools/perl/perl-5.14.2/cve-2012-6329.patch
Normal file
@@ -0,0 +1,71 @@
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
||||
|
||||
From 1735f6f53ca19f99c6e9e39496c486af323ba6a8 Mon Sep 17 00:00:00 2001
|
||||
From: Brian Carlson <brian.carlson@cpanel.net>
|
||||
Date: Wed, 28 Nov 2012 08:54:33 -0500
|
||||
Subject: [PATCH] Fix misparsing of maketext strings.
|
||||
|
||||
Case 61251: This commit fixes a misparse of maketext strings that could
|
||||
lead to arbitrary code execution. Basically, maketext was compiling
|
||||
bracket notation into functions, but neglected to escape backslashes
|
||||
inside the content or die on fully-qualified method names when
|
||||
generating the code. This change escapes all such backslashes and dies
|
||||
when a method name with a colon or apostrophe is specified.
|
||||
---
|
||||
AUTHORS | 1 +
|
||||
dist/Locale-Maketext/lib/Locale/Maketext.pm | 24 ++++++++----------------
|
||||
2 files changed, 9 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/dist/Locale-Maketext/lib/Locale/Maketext.pm b/dist/Locale-Maketext/lib/Locale/Maketext.pm
|
||||
index 4822027..63e5fba 100644
|
||||
--- a/dist/Locale-Maketext/lib/Locale/Maketext.pm
|
||||
+++ b/dist/Locale-Maketext/lib/Locale/Maketext.pm
|
||||
@@ -625,21 +625,9 @@ sub _compile {
|
||||
# 0-length method name means to just interpolate:
|
||||
push @code, ' (';
|
||||
}
|
||||
- elsif($m =~ /^\w+(?:\:\:\w+)*$/s
|
||||
- and $m !~ m/(?:^|\:)\d/s
|
||||
- # exclude starting a (sub)package or symbol with a digit
|
||||
+ elsif($m =~ /^\w+$/s
|
||||
+ # exclude anything fancy, especially fully-qualified module names
|
||||
) {
|
||||
- # Yes, it even supports the demented (and undocumented?)
|
||||
- # $obj->Foo::bar(...) syntax.
|
||||
- $target->_die_pointing(
|
||||
- $string_to_compile, q{Can't use "SUPER::" in a bracket-group method},
|
||||
- 2 + length($c[-1])
|
||||
- )
|
||||
- if $m =~ m/^SUPER::/s;
|
||||
- # Because for SUPER:: to work, we'd have to compile this into
|
||||
- # the right package, and that seems just not worth the bother,
|
||||
- # unless someone convinces me otherwise.
|
||||
-
|
||||
push @code, ' $_[0]->' . $m . '(';
|
||||
}
|
||||
else {
|
||||
@@ -693,7 +681,9 @@ sub _compile {
|
||||
elsif(substr($1,0,1) ne '~') {
|
||||
# it's stuff not containing "~" or "[" or "]"
|
||||
# i.e., a literal blob
|
||||
- $c[-1] .= $1;
|
||||
+ my $text = $1;
|
||||
+ $text =~ s/\\/\\\\/g;
|
||||
+ $c[-1] .= $text;
|
||||
|
||||
}
|
||||
elsif($1 eq '~~') { # "~~"
|
||||
@@ -731,7 +721,9 @@ sub _compile {
|
||||
else {
|
||||
# It's a "~X" where X is not a special character.
|
||||
# Consider it a literal ~ and X.
|
||||
- $c[-1] .= $1;
|
||||
+ my $text = $1;
|
||||
+ $text =~ s/\\/\\\\/g;
|
||||
+ $c[-1] .= $text;
|
||||
}
|
||||
}
|
||||
}
|
||||
--
|
||||
1.7.4.1
|
||||
173
meta/recipes-devtools/perl/perl-5.14.2/cve-2013-1667.patch
Normal file
173
meta/recipes-devtools/perl/perl-5.14.2/cve-2013-1667.patch
Normal file
@@ -0,0 +1,173 @@
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
||||
|
||||
From d59e31fc729d8a39a774f03bc6bc457029a7aef2 Mon Sep 17 00:00:00 2001
|
||||
From: Yves Orton <demerphq@gmail.com>
|
||||
Date: Tue, 12 Feb 2013 10:53:05 +0100
|
||||
Subject: [PATCH] Prevent premature hsplit() calls, and only trigger REHASH after hsplit()
|
||||
|
||||
Triggering a hsplit due to long chain length allows an attacker
|
||||
to create a carefully chosen set of keys which can cause the hash
|
||||
to use 2 * (2**32) * sizeof(void *) bytes ram. AKA a DOS via memory
|
||||
exhaustion. Doing so also takes non trivial time.
|
||||
|
||||
Eliminating this check, and only inspecting chain length after a
|
||||
normal hsplit() (triggered when keys>buckets) prevents the attack
|
||||
entirely, and makes such attacks relatively benign.
|
||||
|
||||
(cherry picked from commit f1220d61455253b170e81427c9d0357831ca0fac)
|
||||
---
|
||||
ext/Hash-Util-FieldHash/t/10_hash.t | 18 ++++++++++++++++--
|
||||
hv.c | 35 ++++++++---------------------------
|
||||
t/op/hash.t | 20 +++++++++++++++++---
|
||||
3 files changed, 41 insertions(+), 32 deletions(-)
|
||||
|
||||
diff --git a/ext/Hash-Util-FieldHash/t/10_hash.t b/ext/Hash-Util-FieldHash/t/10_hash.t
|
||||
index 2cfb4e8..d58f053 100644
|
||||
--- a/ext/Hash-Util-FieldHash/t/10_hash.t
|
||||
+++ b/ext/Hash-Util-FieldHash/t/10_hash.t
|
||||
@@ -38,15 +38,29 @@ use constant START => "a";
|
||||
|
||||
# some initial hash data
|
||||
fieldhash my %h2;
|
||||
-%h2 = map {$_ => 1} 'a'..'cc';
|
||||
+my $counter= "a";
|
||||
+$h2{$counter++}++ while $counter ne 'cd';
|
||||
|
||||
ok (!Internals::HvREHASH(%h2),
|
||||
"starting with pre-populated non-pathological hash (rehash flag if off)");
|
||||
|
||||
my @keys = get_keys(\%h2);
|
||||
+my $buckets= buckets(\%h2);
|
||||
$h2{$_}++ for @keys;
|
||||
+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split
|
||||
ok (Internals::HvREHASH(%h2),
|
||||
- scalar(@keys) . " colliding into the same bucket keys are triggering rehash");
|
||||
+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split");
|
||||
+
|
||||
+# returns the number of buckets in a hash
|
||||
+sub buckets {
|
||||
+ my $hr = shift;
|
||||
+ my $keys_buckets= scalar(%$hr);
|
||||
+ if ($keys_buckets=~m!/([0-9]+)\z!) {
|
||||
+ return 0+$1;
|
||||
+ } else {
|
||||
+ return 8;
|
||||
+ }
|
||||
+}
|
||||
|
||||
sub get_keys {
|
||||
my $hr = shift;
|
||||
diff --git a/hv.c b/hv.c
|
||||
index 2be1feb..abb9d76 100644
|
||||
--- a/hv.c
|
||||
+++ b/hv.c
|
||||
@@ -35,7 +35,8 @@ holds the key and hash value.
|
||||
#define PERL_HASH_INTERNAL_ACCESS
|
||||
#include "perl.h"
|
||||
|
||||
-#define HV_MAX_LENGTH_BEFORE_SPLIT 14
|
||||
+#define HV_MAX_LENGTH_BEFORE_REHASH 14
|
||||
+#define SHOULD_DO_HSPLIT(xhv) ((xhv)->xhv_keys > (xhv)->xhv_max) /* HvTOTALKEYS(hv) > HvMAX(hv) */
|
||||
|
||||
static const char S_strtab_error[]
|
||||
= "Cannot modify shared string table in hv_%s";
|
||||
@@ -794,29 +795,9 @@ Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen,
|
||||
if (masked_flags & HVhek_ENABLEHVKFLAGS)
|
||||
HvHASKFLAGS_on(hv);
|
||||
|
||||
- {
|
||||
- const HE *counter = HeNEXT(entry);
|
||||
-
|
||||
- xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */
|
||||
- if (!counter) { /* initial entry? */
|
||||
- } else if (xhv->xhv_keys > xhv->xhv_max) {
|
||||
- /* Use only the old HvKEYS(hv) > HvMAX(hv) condition to limit
|
||||
- bucket splits on a rehashed hash, as we're not going to
|
||||
- split it again, and if someone is lucky (evil) enough to
|
||||
- get all the keys in one list they could exhaust our memory
|
||||
- as we repeatedly double the number of buckets on every
|
||||
- entry. Linear search feels a less worse thing to do. */
|
||||
- hsplit(hv);
|
||||
- } else if(!HvREHASH(hv)) {
|
||||
- U32 n_links = 1;
|
||||
-
|
||||
- while ((counter = HeNEXT(counter)))
|
||||
- n_links++;
|
||||
-
|
||||
- if (n_links > HV_MAX_LENGTH_BEFORE_SPLIT) {
|
||||
- hsplit(hv);
|
||||
- }
|
||||
- }
|
||||
+ xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */
|
||||
+ if ( SHOULD_DO_HSPLIT(xhv) ) {
|
||||
+ hsplit(hv);
|
||||
}
|
||||
|
||||
if (return_svp) {
|
||||
@@ -1192,7 +1173,7 @@ S_hsplit(pTHX_ HV *hv)
|
||||
|
||||
|
||||
/* Pick your policy for "hashing isn't working" here: */
|
||||
- if (longest_chain <= HV_MAX_LENGTH_BEFORE_SPLIT /* split worked? */
|
||||
+ if (longest_chain <= HV_MAX_LENGTH_BEFORE_REHASH /* split worked? */
|
||||
|| HvREHASH(hv)) {
|
||||
return;
|
||||
}
|
||||
@@ -2831,8 +2812,8 @@ S_share_hek_flags(pTHX_ const char *str, I32 len, register U32 hash, int flags)
|
||||
|
||||
xhv->xhv_keys++; /* HvTOTALKEYS(hv)++ */
|
||||
if (!next) { /* initial entry? */
|
||||
- } else if (xhv->xhv_keys > xhv->xhv_max /* HvKEYS(hv) > HvMAX(hv) */) {
|
||||
- hsplit(PL_strtab);
|
||||
+ } else if ( SHOULD_DO_HSPLIT(xhv) ) {
|
||||
+ hsplit(PL_strtab);
|
||||
}
|
||||
}
|
||||
|
||||
diff --git a/t/op/hash.t b/t/op/hash.t
|
||||
index 278bea7..201260a 100644
|
||||
--- a/t/op/hash.t
|
||||
+++ b/t/op/hash.t
|
||||
@@ -39,22 +39,36 @@ use constant THRESHOLD => 14;
|
||||
use constant START => "a";
|
||||
|
||||
# some initial hash data
|
||||
-my %h2 = map {$_ => 1} 'a'..'cc';
|
||||
+my %h2;
|
||||
+my $counter= "a";
|
||||
+$h2{$counter++}++ while $counter ne 'cd';
|
||||
|
||||
ok (!Internals::HvREHASH(%h2),
|
||||
"starting with pre-populated non-pathological hash (rehash flag if off)");
|
||||
|
||||
my @keys = get_keys(\%h2);
|
||||
+my $buckets= buckets(\%h2);
|
||||
$h2{$_}++ for @keys;
|
||||
+$h2{$counter++}++ while buckets(\%h2) == $buckets; # force a split
|
||||
ok (Internals::HvREHASH(%h2),
|
||||
- scalar(@keys) . " colliding into the same bucket keys are triggering rehash");
|
||||
+ scalar(@keys) . " colliding into the same bucket keys are triggering rehash after split");
|
||||
+
|
||||
+# returns the number of buckets in a hash
|
||||
+sub buckets {
|
||||
+ my $hr = shift;
|
||||
+ my $keys_buckets= scalar(%$hr);
|
||||
+ if ($keys_buckets=~m!/([0-9]+)\z!) {
|
||||
+ return 0+$1;
|
||||
+ } else {
|
||||
+ return 8;
|
||||
+ }
|
||||
+}
|
||||
|
||||
sub get_keys {
|
||||
my $hr = shift;
|
||||
|
||||
# the minimum of bits required to mount the attack on a hash
|
||||
my $min_bits = log(THRESHOLD)/log(2);
|
||||
-
|
||||
# if the hash has already been populated with a significant amount
|
||||
# of entries the number of mask bits can be higher
|
||||
my $keys = scalar keys %$hr;
|
||||
--
|
||||
1.7.4.1
|
||||
@@ -3,10 +3,10 @@ Upstream-Status:Inappropriate [embedded specific]
|
||||
Use the ld flags from the supplied configuration file. For sh we need the
|
||||
flags that specify to build PIC code so that the shared libraries work.
|
||||
|
||||
Index: perl-5.8.8/Cross/generate_config_sh
|
||||
Index: perl-5.14.2/Cross/generate_config_sh
|
||||
===================================================================
|
||||
--- perl-5.8.8.orig/Cross/generate_config_sh 2003-09-05 18:31:08.000000000 +1000
|
||||
+++ perl-5.8.8/Cross/generate_config_sh 2007-05-30 09:12:50.000000000 +1000
|
||||
--- perl-5.14.2.orig/Cross/generate_config_sh 2010-12-30 04:07:14.000000000 +0200
|
||||
+++ perl-5.14.2/Cross/generate_config_sh 2012-11-22 15:58:49.852852805 +0200
|
||||
@@ -19,10 +19,10 @@
|
||||
$callbacks->{'ar'} = [\&simple_process, ["AR", "arm-linux-ar"]];
|
||||
$callbacks->{'archname'} = [\&simple_process, ["SYS", "armv4l-linux"]];
|
||||
@@ -22,7 +22,15 @@ Index: perl-5.8.8/Cross/generate_config_sh
|
||||
$callbacks->{'ccname'} = [\&simple_process, ["CC", "arm-linux-gcc"]];
|
||||
$callbacks->{'cpp'} = [\&simple_process, ["CCP", "arm-linux-cpp"]];
|
||||
$callbacks->{'cppflags'} = [\&simple_process, ["CCPFLAGS", "-fno-strict-aliasing"]];
|
||||
@@ -105,6 +105,23 @@
|
||||
@@ -30,6 +30,7 @@
|
||||
$callbacks->{'cppstdin'} = [\&simple_process_append, ["CC", "arm-linux-gcc -E", "-E"]];
|
||||
$callbacks->{'full_ar'} = [\&backtick, ["AR", "which $ENV{AR}", "/usr/local/arm/2.95.3/bin/arm-linux-ar"]];
|
||||
$callbacks->{'ld'} = [\&simple_process, ["LD", "arm-linux-ld"]];
|
||||
+$callbacks->{'lddlflags'} = [\&simple_process, ["LDDLFLAGS", ""]];
|
||||
$callbacks->{'ldflags'} = [\&simple_process, ["LDFLAGS", ""]];
|
||||
$callbacks->{'ldflags_uselargefiles'} = [\&simple_process, ["LDFLAGS", ""]];
|
||||
$callbacks->{'myarchname'} = [\&simple_process, ["SYS", "armv4l-linux"]];
|
||||
@@ -105,6 +106,23 @@
|
||||
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://Copying;md5=2b4c6ffbcfcbdee469f02565f253d81a \
|
||||
# We need gnugrep (for -I)
|
||||
DEPENDS = "virtual/db grep-native"
|
||||
DEPENDS += "gdbm zlib"
|
||||
PR = "r12"
|
||||
PR = "r13"
|
||||
|
||||
# 5.10.1 has Module::Build built-in
|
||||
PROVIDES += "libmodule-build-perl"
|
||||
@@ -68,6 +68,8 @@ SRC_URI = "http://www.cpan.org/src/5.0/perl-${PV}.tar.gz \
|
||||
file://perl-build-in-t-dir.patch \
|
||||
file://perl-archlib-exp.patch \
|
||||
file://perl-fix-CVE-2012-5195.patch \
|
||||
file://cve-2012-6329.patch \
|
||||
file://cve-2013-1667.patch \
|
||||
\
|
||||
file://config.sh \
|
||||
file://config.sh-32 \
|
||||
@@ -169,7 +171,7 @@ do_configure() {
|
||||
;;
|
||||
esac
|
||||
# These are strewn all over the source tree
|
||||
for foo in `grep -I --exclude="*.patch" --exclude="*.diff" --exclude="*.pod" --exclude="README*" -m1 "/usr/include/.*\.h" ${WORKDIR}/* -r -l` ${S}/utils/h2xs.PL ; do
|
||||
for foo in `grep -I --exclude="*.patch" --exclude="*.diff" --exclude="*.pod" --exclude="README*" -m1 "/usr/include/.*\.h" ${S}/* -r -l` ${S}/utils/h2xs.PL ; do
|
||||
echo Fixing: $foo
|
||||
sed -e 's|\([ "^'\''I]\+\)/usr/include/|\1${STAGING_INCDIR}/|g' -i $foo
|
||||
done
|
||||
@@ -214,6 +216,11 @@ do_install() {
|
||||
|
||||
}
|
||||
|
||||
do_install_append_virtclass-nativesdk () {
|
||||
create_wrapper ${D}${bindir}/perl \
|
||||
PERL5LIB='$PERL5LIB:$OECORE_NATIVE_SYSROOT/${libdir_nativesdk}/perl:$OECORE_NATIVE_SYSROOT/${libdir_nativesdk}/perl/${PV}'
|
||||
}
|
||||
|
||||
PACKAGE_PREPROCESS_FUNCS += "perl_package_preprocess"
|
||||
|
||||
perl_package_preprocess () {
|
||||
@@ -244,7 +251,16 @@ perl_package_preprocess () {
|
||||
|
||||
PACKAGES = "perl-dbg perl perl-misc perl-dev perl-pod perl-doc perl-lib \
|
||||
perl-module-cpan perl-module-cpanplus perl-module-unicore"
|
||||
FILES_${PN} = "${bindir}/perl ${bindir}/perl${PV}"
|
||||
FILES_${PN} = "${bindir}/perl ${bindir}/perl${PV} \
|
||||
${libdir}/perl/${PV}/Config.pm \
|
||||
${libdir}/perl/${PV}/strict.pm \
|
||||
${libdir}/perl/${PV}/warnings.pm \
|
||||
${libdir}/perl/${PV}/warnings \
|
||||
${libdir}/perl/${PV}/vars.pm \
|
||||
"
|
||||
RPROVIDES_${PN} += "perl-module-strict perl-module-vars perl-module-config perl-module-warnings \
|
||||
perl-module-warnings-register"
|
||||
FILES_${PN}_append_virtclass-nativesdk = " ${bindir}/perl.real"
|
||||
FILES_${PN}-dev = "${libdir}/perl/${PV}/CORE"
|
||||
FILES_${PN}-lib = "${libdir}/libperl.so* \
|
||||
${libdir}/perl5 \
|
||||
@@ -295,18 +311,18 @@ FILES_perl-module-unicore += "${libdir}/perl/${PV}/unicore"
|
||||
# packages (actually the non modules packages and not created too)
|
||||
ALLOW_EMPTY_perl-modules = "1"
|
||||
PACKAGES_append = " perl-modules "
|
||||
RRECOMMENDS_perl-modules = "${@d.getVar('PACKAGES', True).replace('${PN}-modules ', '').replace('${PN}-dbg ', '').replace('${PN}-misc ', '').replace('${PN}-dev ', '').replace('${PN}-pod ', '').replace('${PN}-doc ', '')}"
|
||||
|
||||
python populate_packages_prepend () {
|
||||
libdir = d.expand('${libdir}/perl/${PV}')
|
||||
do_split_packages(d, libdir, 'auto/(Encode/.[^/]*)/.*', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
|
||||
do_split_packages(d, libdir, 'auto/([^/]*)/.*', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
|
||||
do_split_packages(d, libdir, 'Module/([^\/]*).*', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
|
||||
do_split_packages(d, libdir, 'auto/(.*)/[^/]*\.(so|ld|ix|al)', 'perl-module-%s', 'perl module %s', recursive=True, match_path=True, prepend=False)
|
||||
do_split_packages(d, libdir, 'Module/([^\/]*)\.pm', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
|
||||
do_split_packages(d, libdir, 'Module/([^\/]*)/.*', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
|
||||
do_split_packages(d, libdir, '(^(?!(CPAN\/|CPANPLUS\/|Module\/|unicore\/|auto\/)[^\/]).*)\.(pm|pl|e2x)', 'perl-module-%s', 'perl module %s', recursive=True, allow_dirs=False, match_path=True, prepend=False)
|
||||
d.setVar("RRECOMMENDS_${PN}-modules", d.getVar('PACKAGES', True).replace('${PN}-modules ', '').replace('${PN}-dbg ', '').replace('${PN}-misc ', '').replace('${PN}-dev ', '').replace('${PN}-pod ', '').replace('${PN}-doc ', ''))
|
||||
}
|
||||
|
||||
PACKAGES_DYNAMIC = "perl-module-*"
|
||||
PACKAGES_DYNAMIC_virtclass-nativesdk = "nativesdk-perl-module-*"
|
||||
PACKAGES_DYNAMIC += "^perl-module-.*"
|
||||
PACKAGES_DYNAMIC_virtclass-nativesdk += "^nativesdk-perl-module-.*"
|
||||
|
||||
RPROVIDES_perl-lib = "perl-lib"
|
||||
|
||||
|
||||
26
meta/recipes-devtools/qemu/qemu-1.2.0/linker-flags-2.patch
Normal file
26
meta/recipes-devtools/qemu/qemu-1.2.0/linker-flags-2.patch
Normal file
@@ -0,0 +1,26 @@
|
||||
diff -urN qemu-1.2.0.orig/Makefile qemu-1.2.0/Makefile
|
||||
--- qemu-1.2.0.orig/Makefile 2012-09-05 10:03:06.000000000 -0400
|
||||
+++ qemu-1.2.0/Makefile 2013-05-07 12:18:23.638560591 -0400
|
||||
@@ -172,7 +172,7 @@
|
||||
qemu-img-cmds.h: $(SRC_PATH)/qemu-img-cmds.hx
|
||||
$(call quiet-command,sh $(SRC_PATH)/scripts/hxtool -h < $< > $@," GEN $@")
|
||||
|
||||
-qemu-ga$(EXESUF): LIBS = $(LIBS_QGA)
|
||||
+qemu-ga$(EXESUF): LIBS = $(LIBS_QGA) -lrt
|
||||
qemu-ga$(EXESUF): QEMU_CFLAGS += -I qga/qapi-generated
|
||||
|
||||
gen-out-type = $(subst .,-,$(suffix $@))
|
||||
diff -urN qemu-1.2.0.orig/configure qemu-1.2.0/configure
|
||||
--- qemu-1.2.0.orig/configure 2012-09-05 10:03:06.000000000 -0400
|
||||
+++ qemu-1.2.0/configure 2013-05-07 12:11:06.940307455 -0400
|
||||
@@ -2681,6 +2681,10 @@
|
||||
LIBS="-lrt $LIBS"
|
||||
fi
|
||||
|
||||
+if test "$linux" = "yes" ; then
|
||||
+ LIBS="-lrt $LIBS"
|
||||
+fi
|
||||
+
|
||||
if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
|
||||
"$aix" != "yes" -a "$haiku" != "yes" ; then
|
||||
libs_softmmu="-lutil $libs_softmmu"
|
||||
@@ -8,6 +8,7 @@ SRC_URI = "\
|
||||
file://powerpc_rom.bin \
|
||||
file://no-strip.patch \
|
||||
file://linker-flags.patch \
|
||||
file://linker-flags-2.patch \
|
||||
file://qemu-vmware-vga-depth.patch \
|
||||
file://fix-configure-checks.patch \
|
||||
file://fallback-to-safe-mmap_min_addr.patch \
|
||||
|
||||
@@ -13,13 +13,11 @@ DEPENDS += "readline"
|
||||
PROVIDES += "make"
|
||||
|
||||
do_configure_prepend() {
|
||||
# remove the default LINGUAS since we are not going to generate languages
|
||||
rm po/LINGUAS
|
||||
touch po/LINGUAS
|
||||
# create config.rpath which required by configure.ac
|
||||
autopoint || touch config.rpath
|
||||
}
|
||||
|
||||
do_compile_prepend() {
|
||||
# updating .po and other gnu build files
|
||||
make update
|
||||
}
|
||||
|
||||
BBCLASSEXTEND = "native"
|
||||
|
||||
@@ -12,36 +12,56 @@ python __anonymous () {
|
||||
}
|
||||
|
||||
do_install_append() {
|
||||
if test -n "${KERNEL_DEVICETREE}"; then
|
||||
for DTS_FILE in ${KERNEL_DEVICETREE}; do
|
||||
if [ ! -f ${DTS_FILE} ]; then
|
||||
echo "Warning: ${DTS_FILE} is not available!"
|
||||
continue
|
||||
fi
|
||||
DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
|
||||
DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
|
||||
DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
|
||||
dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o ${DTS_BASE_NAME} ${DTS_FILE}
|
||||
install -m 0644 ${DTS_BASE_NAME} ${D}/boot/devicetree-${DTB_SYMLINK_NAME}.dtb
|
||||
done
|
||||
fi
|
||||
if test -n "${KERNEL_DEVICETREE}"; then
|
||||
for DTS_FILE in ${KERNEL_DEVICETREE}; do
|
||||
if [ ! -f ${DTS_FILE} ]; then
|
||||
echo "Warning: ${DTS_FILE} is not available!"
|
||||
continue
|
||||
fi
|
||||
DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
|
||||
DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
|
||||
DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
|
||||
dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o ${DTS_BASE_NAME} ${DTS_FILE}
|
||||
install -m 0644 ${DTS_BASE_NAME} ${D}/boot/devicetree-${DTB_SYMLINK_NAME}.dtb
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
do_deploy_append() {
|
||||
if test -n "${KERNEL_DEVICETREE}"; then
|
||||
for DTS_FILE in ${KERNEL_DEVICETREE}; do
|
||||
if [ ! -f ${DTS_FILE} ]; then
|
||||
echo "Warning: ${DTS_FILE} is not available!"
|
||||
continue
|
||||
fi
|
||||
DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
|
||||
DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
|
||||
DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
|
||||
install -d ${DEPLOYDIR}
|
||||
install -m 0644 ${B}/${DTS_BASE_NAME} ${DEPLOYDIR}/${DTB_NAME}.dtb
|
||||
cd ${DEPLOYDIR}
|
||||
ln -sf ${DTB_NAME}.dtb ${DTB_SYMLINK_NAME}.dtb
|
||||
cd -
|
||||
done
|
||||
fi
|
||||
if test -n "${KERNEL_DEVICETREE}"; then
|
||||
for DTS_FILE in ${KERNEL_DEVICETREE}; do
|
||||
if [ ! -f ${DTS_FILE} ]; then
|
||||
echo "Warning: ${DTS_FILE} is not available!"
|
||||
continue
|
||||
fi
|
||||
DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
|
||||
DTB_NAME=`echo ${KERNEL_IMAGE_BASE_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
|
||||
DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
|
||||
install -d ${DEPLOYDIR}
|
||||
install -m 0644 ${B}/${DTS_BASE_NAME} ${DEPLOYDIR}/${DTB_NAME}.dtb
|
||||
cd ${DEPLOYDIR}
|
||||
ln -sf ${DTB_NAME}.dtb ${DTB_SYMLINK_NAME}.dtb
|
||||
cd -
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst_kernel-devicetree () {
|
||||
cd /${KERNEL_IMAGEDEST}
|
||||
for DTS_FILE in ${KERNEL_DEVICETREE}
|
||||
do
|
||||
DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
|
||||
DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
|
||||
update-alternatives --install /${KERNEL_IMAGEDEST}/${DTS_BASE_NAME}.dtb ${DTS_BASE_NAME}.dtb devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
|
||||
done
|
||||
}
|
||||
|
||||
pkg_postrm_kernel-devicetree () {
|
||||
cd /${KERNEL_IMAGEDEST}
|
||||
for DTS_FILE in ${KERNEL_DEVICETREE}
|
||||
do
|
||||
DTS_BASE_NAME=`basename ${DTS_FILE} | awk -F "." '{print $1}'`
|
||||
DTB_SYMLINK_NAME=`echo ${KERNEL_IMAGE_SYMLINK_NAME} | sed "s/${MACHINE}/${DTS_BASE_NAME}/g"`
|
||||
update-alternatives --remove ${DTS_BASE_NAME}.dtb devicetree-${DTB_SYMLINK_NAME}.dtb ${KERNEL_PRIORITY} || true
|
||||
done
|
||||
}
|
||||
|
||||
@@ -27,6 +27,6 @@ KERNEL_REVISION_CHECKING=""
|
||||
KERNEL_FEATURES_append = " features/netfilter"
|
||||
KERNEL_FEATURES_append_qemux86=" cfg/sound"
|
||||
KERNEL_FEATURES_append_qemux86-64=" cfg/sound"
|
||||
KERNEL_FEATURES_append_qemux86=" cfg/paravirt_kvm"
|
||||
KERNEL_FEATURES_append_qemux86-64=" cfg/paravirt_kvm"
|
||||
#KERNEL_FEATURES_append_qemux86=" cfg/paravirt_kvm"
|
||||
#KERNEL_FEATURES_append_qemux86-64=" cfg/paravirt_kvm"
|
||||
KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32", "" ,d)}"
|
||||
|
||||
@@ -28,7 +28,7 @@ DEPENDS = "virtual/kernel \
|
||||
"
|
||||
|
||||
SCRIPTING_RDEPENDS = "${@perf_feature_enabled('perf-scripting', 'perl perl-modules python', '',d)}"
|
||||
RDEPENDS_${PN} += "elfutils ${SCRIPTING_RDEPENDS}"
|
||||
RDEPENDS_${PN} += "elfutils bash ${SCRIPTING_RDEPENDS}"
|
||||
|
||||
PROVIDES = "virtual/perf"
|
||||
|
||||
|
||||
@@ -6,12 +6,12 @@ BUGTRACKER = "http://bugzilla.lesswatts.org/"
|
||||
LICENSE = "GPLv2"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
|
||||
|
||||
DEPENDS = "virtual/libintl ncurses"
|
||||
DEPENDS = "ncurses"
|
||||
|
||||
# powertop 1.13 needs lspci
|
||||
RDEPENDS_${PN} = "pciutils"
|
||||
|
||||
PR = "r4"
|
||||
PR = "r5"
|
||||
|
||||
SRC_URI = "http://www.lesswatts.org/projects/powertop/download/powertop-${PV}.tar.gz \
|
||||
file://stub_out_the_ncurses_calls_in_dump_mode.patch \
|
||||
@@ -20,6 +20,8 @@ SRC_URI = "http://www.lesswatts.org/projects/powertop/download/powertop-${PV}.ta
|
||||
SRC_URI[md5sum] = "78aa17c8f55178004223bf236654298e"
|
||||
SRC_URI[sha256sum] = "2bc866089496877dd26d2d316ad5763ab8ecb5e28aefba44bc5d355dcdc58d98"
|
||||
|
||||
inherit gettext
|
||||
|
||||
CFLAGS += "${LDFLAGS}"
|
||||
EXTRA_OEMAKE = "VERSION=\"${PV}\" EXTRA_LIBS=${EXTRA_LIBS}"
|
||||
|
||||
|
||||
@@ -6,12 +6,16 @@ DEPENDS = "elfutils sqlite3 systemtap-native"
|
||||
DEPENDS_virtclass-native = "elfutils-native sqlite3-native gettext-native"
|
||||
DEPENDS_virtclass-nativesdk = "nativesdk-elfutils nativesdk-sqlite3 nativesdk-gettext"
|
||||
|
||||
PR = "r0"
|
||||
PR = "r1"
|
||||
|
||||
export CC_FOR_BUILD = "${BUILD_CC}"
|
||||
export CFLAGS_FOR_BUILD = "${BUILD_CFLAGS}"
|
||||
export LDFLAGS_FOR_BUILD = "${BUILD_LDFLAGS}"
|
||||
|
||||
RDEPENDS_${PN} += "python bash"
|
||||
RDEPENDS_${PN}_class-native += "python-native"
|
||||
RDEPENDS_${PN}_class-nativesdk += "python-native"
|
||||
|
||||
EXTRA_OECONF += "--with-libelf=${STAGING_DIR_TARGET} --without-rpm \
|
||||
--without-nss --without-avahi \
|
||||
--disable-server --disable-grapher "
|
||||
|
||||
70
meta/recipes-support/gnupg/gnupg/cve-2012-6085.patch
Normal file
70
meta/recipes-support/gnupg/gnupg/cve-2012-6085.patch
Normal file
@@ -0,0 +1,70 @@
|
||||
Fix CVE-2012-6085 by backporting a patch from upstream's git repository.
|
||||
|
||||
Upstream-Status: Backport
|
||||
Signed-off-by: Ross Burton <ross.burton@intel.com>
|
||||
|
||||
|
||||
From 498882296ffac7987c644aaf2a0aa108a2925471 Mon Sep 17 00:00:00 2001
|
||||
From: Werner Koch <wk@gnupg.org>
|
||||
Date: Thu, 20 Dec 2012 09:43:41 +0100
|
||||
Subject: [PATCH] gpg: Import only packets which are allowed in a keyblock.
|
||||
|
||||
* g10/import.c (valid_keyblock_packet): New.
|
||||
(read_block): Store only valid packets.
|
||||
--
|
||||
|
||||
A corrupted key, which for example included a mangled public key
|
||||
encrypted packet, used to corrupt the keyring. This change skips all
|
||||
packets which are not allowed in a keyblock.
|
||||
|
||||
GnuPG-bug-id: 1455
|
||||
|
||||
(cherry-picked from commit 3a4b96e665fa639772854058737ee3d54ba0694e)
|
||||
---
|
||||
g10/import.c | 23 ++++++++++++++++++++++-
|
||||
1 files changed, 22 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/g10/import.c b/g10/import.c
|
||||
index ba2439d..ad112d6 100644
|
||||
--- a/g10/import.c
|
||||
+++ b/g10/import.c
|
||||
@@ -347,6 +347,27 @@ import_print_stats (void *hd)
|
||||
}
|
||||
|
||||
|
||||
+/* Return true if PKTTYPE is valid in a keyblock. */
|
||||
+static int
|
||||
+valid_keyblock_packet (int pkttype)
|
||||
+{
|
||||
+ switch (pkttype)
|
||||
+ {
|
||||
+ case PKT_PUBLIC_KEY:
|
||||
+ case PKT_PUBLIC_SUBKEY:
|
||||
+ case PKT_SECRET_KEY:
|
||||
+ case PKT_SECRET_SUBKEY:
|
||||
+ case PKT_SIGNATURE:
|
||||
+ case PKT_USER_ID:
|
||||
+ case PKT_ATTRIBUTE:
|
||||
+ case PKT_RING_TRUST:
|
||||
+ return 1;
|
||||
+ default:
|
||||
+ return 0;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+
|
||||
/****************
|
||||
* Read the next keyblock from stream A.
|
||||
* PENDING_PKT should be initialzed to NULL
|
||||
@@ -424,7 +445,7 @@ read_block( IOBUF a, PACKET **pending_pkt, KBNODE *ret_root )
|
||||
}
|
||||
in_cert = 1;
|
||||
default:
|
||||
- if( in_cert ) {
|
||||
+ if (in_cert && valid_keyblock_packet (pkt->pkttype)) {
|
||||
if( !root )
|
||||
root = new_kbnode( pkt );
|
||||
else
|
||||
--
|
||||
1.7.2.5
|
||||
|
||||
@@ -13,7 +13,8 @@ SRC_URI = "ftp://ftp.gnupg.org/gcrypt/gnupg/gnupg-${PV}.tar.bz2 \
|
||||
file://long-long-thumb.patch \
|
||||
file://configure.patch \
|
||||
file://mips_gcc4.4.patch \
|
||||
file://curl_typeof_fix_backport.patch"
|
||||
file://curl_typeof_fix_backport.patch \
|
||||
file://cve-2012-6085.patch"
|
||||
|
||||
SRC_URI[md5sum] = "b06a141cca5cd1a55bbdd25ab833303c"
|
||||
SRC_URI[sha256sum] = "69d18b7d193f62ca27ed4febcb4c9044aa0c95305d3258fe902e2fae5fc6468d"
|
||||
|
||||
@@ -11,7 +11,8 @@ PR = "r4"
|
||||
|
||||
inherit autotools gettext
|
||||
|
||||
SRC_URI = "ftp://ftp.gnupg.org/gcrypt/${BPN}/${BPN}-${PV}.tar.bz2"
|
||||
SRC_URI = "ftp://ftp.gnupg.org/gcrypt/${BPN}/${BPN}-${PV}.tar.bz2 \
|
||||
file://cve-2012-6085.patch"
|
||||
|
||||
SRC_URI[md5sum] = "6a8589381ca1b0c1a921e9955f42b016"
|
||||
SRC_URI[sha256sum] = "efa23a8a925adb51c7d3b708c25b6d000300f5ce37de9bdec6453be7b419c622"
|
||||
|
||||
@@ -6,7 +6,7 @@ LICENSE = "LGPLv2.1+"
|
||||
LIC_FILES_CHKSUM = "file://COPYING;md5=7d7044444a7b1b116e8783edcdb44ff4 \
|
||||
file://utils/proxy.c;beginline=1;endline=18;md5=55152a1006d7dafbef32baf9c30a99c0"
|
||||
|
||||
DEPENDS = "gconf"
|
||||
DEPENDS = "gconf glib-2.0"
|
||||
|
||||
PR = "r4"
|
||||
|
||||
|
||||
@@ -84,13 +84,46 @@ Test_SCP()
|
||||
local ip_addr=$1
|
||||
local src=$2
|
||||
local des=$3
|
||||
local tmpfile=`mktemp`
|
||||
local time_out=60
|
||||
local ret=0
|
||||
|
||||
# We use expect to interactive with target by ssh
|
||||
local exp_cmd=`cat << EOF
|
||||
eval spawn scp -o UserKnownHostsFile=$tmpfile "$src" root@$ip_addr:"$des"
|
||||
eval spawn scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no "$src" root@$ip_addr:"$des"
|
||||
set timeout $time_out
|
||||
expect {
|
||||
"*assword:" { send "\r"; exp_continue}
|
||||
"*(yes/no)?" { send "yes\r"; exp_continue }
|
||||
eof { exit [ lindex [wait] 3 ] }
|
||||
}
|
||||
EOF`
|
||||
|
||||
expect=`which expect`
|
||||
if [ ! -x "$expect" ]; then
|
||||
Test_Error "ERROR: Please install expect"
|
||||
return 1
|
||||
fi
|
||||
|
||||
expect -c "$exp_cmd"
|
||||
ret=$?
|
||||
return $ret
|
||||
}
|
||||
|
||||
# function to copy files from target to host
|
||||
# $1 is the ip address of target
|
||||
# $2 is the files, which need to be copied into target
|
||||
# $3 is the path on target, where files are copied into
|
||||
Test_SCP_From()
|
||||
{
|
||||
local ip_addr=$1
|
||||
local src=$2
|
||||
local des=$3
|
||||
local time_out=60
|
||||
local ret=0
|
||||
|
||||
# We use expect to interactive with target by ssh
|
||||
local exp_cmd=`cat << EOF
|
||||
eval spawn scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@$ip_addr:"$src" "$des"
|
||||
set timeout $time_out
|
||||
expect {
|
||||
"*assword:" { send "\r"; exp_continue}
|
||||
@@ -107,7 +140,6 @@ EOF`
|
||||
|
||||
expect -c "$exp_cmd"
|
||||
ret=$?
|
||||
rm -rf $tmpfile
|
||||
return $ret
|
||||
}
|
||||
|
||||
@@ -117,11 +149,10 @@ Test_SSH()
|
||||
local ip_addr=$1
|
||||
shift
|
||||
local command=$@
|
||||
local tmpfile=`mktemp`
|
||||
local time_out=60
|
||||
local ret=0
|
||||
local exp_cmd=`cat << EOF
|
||||
eval spawn ssh -o UserKnownHostsFile=$tmpfile root@$ip_addr "$command"
|
||||
eval spawn ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@$ip_addr "$command"
|
||||
set timeout $time_out
|
||||
expect {
|
||||
"*assword:" { send "\r"; exp_continue}
|
||||
@@ -138,7 +169,6 @@ EOF`
|
||||
|
||||
expect -c "$exp_cmd"
|
||||
ret=$?
|
||||
rm -rf $tmpfile
|
||||
return $ret
|
||||
}
|
||||
|
||||
@@ -418,7 +448,7 @@ Test_Create_Qemu()
|
||||
sleep 5
|
||||
fi
|
||||
|
||||
while [ ${up_time} -lt 10 ]
|
||||
while [ ${up_time} -lt 30 ]
|
||||
do
|
||||
QEMUPID=`qemuimage-testlib-pythonhelper --findqemu $XTERMPID 2>/dev/null`
|
||||
if [ $? -ne 0 ]; then
|
||||
@@ -432,7 +462,7 @@ Test_Create_Qemu()
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ${up_time} == 10 ]; then
|
||||
if [ ${up_time} == 30 ]; then
|
||||
Test_Info "No qemu process appeared to start, exiting"
|
||||
ps axww -O ppid
|
||||
Test_Info "Process list dumped for debugging purposes"
|
||||
@@ -442,10 +472,11 @@ Test_Create_Qemu()
|
||||
return 1
|
||||
fi
|
||||
|
||||
up_time=0
|
||||
# Parse IP address of target from the qemu command line
|
||||
TARGET_IPADDR=`Test_Fetch_Target_IP $QEMUPID`
|
||||
echo "Target IP is ${TARGET_IPADDR}"
|
||||
if [ ${TARGET_IPADDR} = "" -o "${TARGET_IPADDR}" = "0" ]; then
|
||||
if [ "${TARGET_IPADDR}" = "" -o "${TARGET_IPADDR}" = "0" ]; then
|
||||
Test_Info "There is no qemu process or qemu ip address found, return failed"
|
||||
ps -wwf
|
||||
ps axww -O ppid
|
||||
@@ -468,6 +499,10 @@ Test_Create_Qemu()
|
||||
fi
|
||||
done
|
||||
|
||||
Test_Info "Process list dumped for debugging purposes:"
|
||||
ps axww -O ppid
|
||||
Test_Info "runqemu output log:"
|
||||
cat ${RUNQEMU_LOGFILE}
|
||||
Test_Info "Qemu or its network is not up in ${timeout} seconds"
|
||||
Test_Update_IPSAVE $XTERMPID $TARGET_IPADDR
|
||||
return 1
|
||||
@@ -708,3 +743,12 @@ Test_Toolchain()
|
||||
|
||||
return $ret
|
||||
}
|
||||
|
||||
Test_Display_Syslog()
|
||||
{
|
||||
local tmplog=`mktemp`
|
||||
Test_SCP_From ${TARGET_IPADDR} /var/log/messages $tmplog
|
||||
echo "System logs:"
|
||||
cat $tmplog
|
||||
rm -f $tmplog
|
||||
}
|
||||
@@ -3,6 +3,7 @@
|
||||
import optparse
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
|
||||
parser = optparse.OptionParser(
|
||||
usage = """
|
||||
@@ -19,7 +20,7 @@ if options.findqemu:
|
||||
#
|
||||
# Walk the process tree from the process specified looking for a qemu-system. Return its pid.
|
||||
#
|
||||
ps = subprocess.Popen(['ps', 'ax', '-o', 'pid,ppid,command'], stdout=subprocess.PIPE).communicate()[0]
|
||||
ps = subprocess.Popen(['ps', 'axww', '-o', 'pid,ppid,command'], stdout=subprocess.PIPE).communicate()[0]
|
||||
processes = ps.split('\n')
|
||||
nfields = len(processes[0].split()) - 1
|
||||
pids = {}
|
||||
@@ -52,7 +53,10 @@ if options.findqemu:
|
||||
newparents = next
|
||||
#print "Children matching %s:" % str(parents)
|
||||
for p in parents:
|
||||
if "qemu-system" in commands[p]:
|
||||
# Need to be careful here since runqemu-internal runs "ldd qemu-system-xxxx"
|
||||
basecmd = commands[p].split()[0]
|
||||
basecmd = os.path.basename(basecmd)
|
||||
if "qemu-system" in basecmd:
|
||||
print p
|
||||
sys.exit(0)
|
||||
sys.exit(1)
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
#
|
||||
. $COREBASE/scripts/qemuimage-testlib
|
||||
|
||||
TIMEOUT=120
|
||||
TIMEOUT=400
|
||||
|
||||
# Start qemu and check its network
|
||||
Test_Create_Qemu ${TIMEOUT}
|
||||
|
||||
@@ -46,6 +46,7 @@ if [ ${RET} -eq 0 ]; then
|
||||
exit 0
|
||||
else
|
||||
Test_Info "Connman Test FAIL, Pls. check above error log"
|
||||
Test_Display_Syslog
|
||||
Test_Kill_Qemu
|
||||
Test_Print_Result "connman" 1
|
||||
exit 1
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity connman
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
systemusage bash
|
||||
systemusage df
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity compiler
|
||||
sanity connman
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
systemusage bash
|
||||
systemusage df
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity connman
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
systemusage bash
|
||||
systemusage df
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity compiler
|
||||
sanity connman
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
systemusage bash
|
||||
systemusage df
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity connman
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
systemusage bash
|
||||
systemusage df
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity compiler
|
||||
sanity connman
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
systemusage bash
|
||||
systemusage df
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity connman
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
systemusage bash
|
||||
systemusage df
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity compiler
|
||||
sanity connman
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
systemusage bash
|
||||
systemusage df
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity connman
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
systemusage bash
|
||||
systemusage df
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
sanity ssh
|
||||
sanity scp
|
||||
sanity dmesg
|
||||
sanity zypper_help
|
||||
sanity zypper_search
|
||||
sanity rpm_query
|
||||
sanity compiler
|
||||
sanity connman
|
||||
sanity dmesg
|
||||
sanity shutdown
|
||||
systemusage bash
|
||||
systemusage df
|
||||
|
||||
@@ -45,7 +45,7 @@ fi
|
||||
|
||||
if [ $count -ne 1 ]; then
|
||||
Target_Info "connmand has issue when running in background, Pls, check the output of ps"
|
||||
${PS} | grep connmand
|
||||
${PS}
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
@@ -55,22 +55,22 @@ def parse_elf_header():
|
||||
|
||||
if arch == 32:
|
||||
# 32bit
|
||||
hdr_struct = struct.Struct("<HHILLLIHHHHHH")
|
||||
hdr_fmt = "<HHILLLIHHHHHH"
|
||||
hdr_size = 52
|
||||
else:
|
||||
# 64bit
|
||||
hdr_struct = struct.Struct("<HHIQQQIHHHHHH")
|
||||
hdr_fmt = "<HHIQQQIHHHHHH"
|
||||
hdr_size = 64
|
||||
|
||||
e_type, e_machine, e_version, e_entry, e_phoff, e_shoff, e_flags,\
|
||||
e_ehsize, e_phentsize, e_phnum, e_shentsize, e_shnum, e_shstrndx =\
|
||||
hdr_struct.unpack(elf_header[16:hdr_size])
|
||||
struct.unpack(hdr_fmt, elf_header[16:hdr_size])
|
||||
|
||||
def change_interpreter():
|
||||
def change_interpreter(elf_file_name):
|
||||
if arch == 32:
|
||||
ph_struct = struct.Struct("<IIIIIIII")
|
||||
ph_fmt = "<IIIIIIII"
|
||||
else:
|
||||
ph_struct = struct.Struct("<IIQQQQQQ")
|
||||
ph_fmt = "<IIQQQQQQ"
|
||||
|
||||
""" look for PT_INTERP section """
|
||||
for i in range(0,e_phnum):
|
||||
@@ -79,25 +79,34 @@ def change_interpreter():
|
||||
if arch == 32:
|
||||
# 32bit
|
||||
p_type, p_offset, p_vaddr, p_paddr, p_filesz,\
|
||||
p_memsz, p_flags, p_align = ph_struct.unpack(ph_hdr)
|
||||
p_memsz, p_flags, p_align = struct.unpack(ph_fmt, ph_hdr)
|
||||
else:
|
||||
# 64bit
|
||||
p_type, p_flags, p_offset, p_vaddr, p_paddr, \
|
||||
p_filesz, p_memsz, p_align = ph_struct.unpack(ph_hdr)
|
||||
p_filesz, p_memsz, p_align = struct.unpack(ph_fmt, ph_hdr)
|
||||
|
||||
""" change interpreter """
|
||||
if p_type == 3:
|
||||
# PT_INTERP section
|
||||
f.seek(p_offset)
|
||||
# External SDKs with mixed pre-compiled binaries should not get
|
||||
# relocated so look for some variant of /lib
|
||||
fname = f.read(11)
|
||||
if fname.startswith("/lib/") or fname.startswith("/lib64/") or fname.startswith("/lib32/") or fname.startswith("/usr/lib32/") or fname.startswith("/usr/lib32/") or fname.startswith("/usr/lib64/"):
|
||||
break
|
||||
if (len(new_dl_path) >= p_filesz):
|
||||
print "ERROR: could not relocate %s, interp size = %i and %i is needed." % (elf_file_name, p_memsz, len(new_dl_path) + 1)
|
||||
break
|
||||
dl_path = new_dl_path + "\0" * (p_filesz - len(new_dl_path))
|
||||
f.seek(p_offset)
|
||||
f.write(dl_path)
|
||||
break
|
||||
|
||||
def change_dl_sysdirs():
|
||||
if arch == 32:
|
||||
sh_struct = struct.Struct("<IIIIIIIIII")
|
||||
sh_fmt = "<IIIIIIIIII"
|
||||
else:
|
||||
sh_struct = struct.Struct("<IIQQQQIIQQ")
|
||||
sh_fmt = "<IIQQQQIIQQ"
|
||||
|
||||
""" read section string table """
|
||||
f.seek(e_shoff + e_shstrndx * e_shentsize)
|
||||
@@ -118,7 +127,7 @@ def change_dl_sysdirs():
|
||||
sh_hdr = f.read(e_shentsize)
|
||||
|
||||
sh_name, sh_type, sh_flags, sh_addr, sh_offset, sh_size, sh_link,\
|
||||
sh_info, sh_addralign, sh_entsize = sh_struct.unpack(sh_hdr)
|
||||
sh_info, sh_addralign, sh_entsize = struct.unpack(sh_fmt, sh_hdr)
|
||||
|
||||
name = sh_strtab[sh_name:sh_strtab.find("\0", sh_name)]
|
||||
|
||||
@@ -172,7 +181,7 @@ def change_dl_sysdirs():
|
||||
|
||||
# MAIN
|
||||
if len(sys.argv) < 4:
|
||||
exit(-1)
|
||||
sys.exit(-1)
|
||||
|
||||
new_prefix = sys.argv[1]
|
||||
new_dl_path = sys.argv[2]
|
||||
@@ -187,19 +196,19 @@ for e in executables_list:
|
||||
|
||||
try:
|
||||
f = open(e, "r+b")
|
||||
except IOError as ioex:
|
||||
except IOError, ioex:
|
||||
if ioex.errno == errno.ETXTBSY:
|
||||
print("Could not open %s. File used by another process.\nPlease "\
|
||||
"make sure you exit all processes that might use any SDK "\
|
||||
"binaries." % e)
|
||||
else:
|
||||
print("Could not open %s: %s(%d)" % (e, ioex.strerror, ioex.errno))
|
||||
exit(-1)
|
||||
sys.exit(-1)
|
||||
|
||||
arch = get_arch()
|
||||
if arch:
|
||||
parse_elf_header()
|
||||
change_interpreter()
|
||||
change_interpreter(e)
|
||||
change_dl_sysdirs()
|
||||
|
||||
""" change permissions back """
|
||||
|
||||
Reference in New Issue
Block a user