summaryrefslogtreecommitdiffstats
path: root/meta-oem-extra-libs/recipes-core/packagegroups
AgeCommit message (Collapse)AuthorFilesLines
2016-11-02Add software packages for oem needs librarytte_zheng_wenlong1-0/+43
These recipes is support software packages for oem needs. The librarys include: boost, fixesproto, imagemagick, iptables, Xorg-macros zlib, eglibc(glibc), libcurl, libgif, libneon, mongoose fuse, protocol buffers, bsdiff, module-init-tools libcroco, libtiff, librsvg, libpcap, libtar You can add these librarys by feature 'agl-oem-extra-libs' source meta-agl/scripts/aglsetup.sh -m porter agl-demo [agl-appfw-smack] [agl-devel] [agl-netboot] agl-oem-extra-libs v2[jsmoeller]: - change to ImageMagick recipe (generalize configure append and add dependency) - readd libtar with tarball taken from debian as original git is n/a v3[tte_zheng_wenlong] - add libtar and libtar-dev in packagegroup-ivi-common-core-os-commonlibs.bbappend - modify README.md to explain build command. v4[tte_zheng_wenlong] - modify mongoose license from GPLv2 to MIT. - delete [] for agl-oem-extra-libs for README.md Change-Id: I1f9d2f1c023f332d528918c3f730ee0360a1f497 Signed-off-by: tte_zheng_wenlong <wenlong_zheng_za@mail.toyota.co.jp> Signed-off-by: Jan-Simon Möller <jsmoeller@linuxfoundation.org>
/a> 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
/*
 Copyright 2017 IoT.bzh

 author: José Bollo <jose.bollo@iot.bzh>

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
*/

#include "afb-debug.h"

#if defined(AFB_INSERT_DEBUG_FEATURES)

#define _GNU_SOURCE
#include <stdlib.h>
#include <string.h>
#include <signal.h>

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#if !defined(NO_CALL_PERSONALITY)
#include <sys/personality.h>
#endif

#include "verbose.h"

static char key_env_break[] = "AFB_DEBUG_BREAK";
static char key_env_wait[] = "AFB_DEBUG_WAIT";
static char separs[] = ", \t\n";

/*
 * Checks whether the 'key' is in the 'list'
 * Return 1 if it is in or 0 otherwise
 */
static int has_key(const char *key, const char *list)
{
	if (list && key) {
		list += strspn(list, separs);
		while (*list) {
			size_t s = strcspn(list, separs);
			if (!strncasecmp(list, key, s) && !key[s])
				return 1;
			list += s;
			list += strspn(list, separs);
		}
	}
	return 0;
}

static void indicate(const char *key)
{
#if !defined(NO_AFB_DEBUG_FILE_INDICATION)
	char filename[200];
	int fd;

	snprintf(filename, sizeof filename, "/tmp/afb-debug-%ld", (long)getpid());
	if (key) {
		fd = creat(filename, 0644);
		write(fd, key, strlen(key));
		close(fd);
	} else {
		unlink(filename);
	}
#endif
}

static void handler(int signum)
{
}

void afb_debug_wait(const char *key)
{
	struct sigaction sa, psa;
	sigset_t ss, oss;

	key = key ?: "NULL";
	NOTICE("DEBUG WAIT before %s", key);
	sigfillset(&ss);
	sigdelset(&ss, SIGINT);
	sigprocmask(SIG_SETMASK, &ss, &oss);
	sigemptyset(&ss);
	sigaddset(&ss, SIGINT);
	memset(&sa, 0, sizeof sa);
	sa.sa_handler = handler;
	sigaction(SIGINT, &sa, &psa);
	indicate(key);
	sigwaitinfo(&ss, NULL);
	sigaction(SIGINT, &psa, NULL);
	indicate(NULL);
	sigprocmask(SIG_SETMASK, &oss, NULL);
	NOTICE("DEBUG WAIT after %s", key);
#if !defined(NO_CALL_PERSONALITY)
	personality((unsigned long)-1L);
#endif
}

void afb_debug_break(const char *key)
{
	struct sigaction sa, psa;

	key = key ?: "NULL";
	NOTICE("DEBUG BREAK before %s", key);
	memset(&sa, 0, sizeof sa);
	sa.sa_handler = handler;
	sigaction(SIGINT, &sa, &psa);
	raise(SIGINT);
	sigaction(SIGINT, &psa, NULL);
	NOTICE("DEBUG BREAK after %s", key);
}

void afb_debug(const char *key)
{
	if (has_key(key, secure_getenv(key_env_wait)))
		afb_debug_wait(key);
	if (has_key(key, secure_getenv(key_env_break)))
		afb_debug_break(key);
}

#endif