Project import
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..9272d96 --- /dev/null +++ b/Makefile
@@ -0,0 +1,100 @@ +# +# Copyright (c) 2010-2014 Nest, Inc. +# All rights reserved. +# +# This document is the property of Nest. It is considered +# confidential and proprietary information. +# +# This document may not be reproduced or transmitted in any form, +# in whole or in part, without the express written permission of +# Nest. +# +# Description: +# This file is the makefile for the MTD oops log collection utility. +# + + +include pre.mak + +PackageName := sp-oops-extract + +PackageExtension := tar.gz +PackageSeparator := - + +PackagePatchArgs := -p1 + +PackageArchive := $(PackageName).$(PackageExtension) +PackageSourceDir := $(PackageName)$(PackageSeparator)$(PackageVersion) + +PackageBuildMakefile = $(call GenerateBuildPaths,Makefile) + +CleanPaths += $(PackageLicenseFile) + +SOURCEDIRS = $(PackageSourceDir) +$(PackageSourceDir)_RULE_TARGET = $(BuildDirectory)/configure + +all: $(PackageDefaultGoal) + +# Generate the package license contents. + +$(PackageSourceDir)/COPYING: $(BuildDirectory)/source + +$(PackageLicenseFile): $(PackageSourceDir)/COPYING + $(copy-result) + +# Extract the source from the archive and apply patches, if any. + +$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths) + $(expand-and-patch-package) + +# Prepare the sources. + +$(BuildDirectory)/source: | $(PackageSourceDir) + $(Verbose)touch $@ + +# Patch the sources, if necessary. + +$(BuildDirectory)/patch: $(BuildDirectory)/source + $(Verbose)touch $@ + +# Generate the package build makefile. + +$(PackageBuildMakefile): | $(PackageSourceDir) $(BuildDirectory) + $(call create-links,$(CURDIR)/$(PackageSourceDir),$(BuildDirectory)) + +# Configure the source for building. + +$(BuildDirectory)/configure: $(BuildDirectory)/source $(PackageBuildMakefile) + $(Verbose)touch $@ + +# Build the source. +# +# We have to unset MAKEFLAGS since they confuse the package build otherwise. + +$(BuildDirectory)/build: $(BuildDirectory)/configure | $(BuildDirectory) + $(Verbose)unset MAKEFLAGS && \ + $(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \ + CC="$(CC) $(CPPOPTFLAGS) $(call ToolGenerateIncludeArgument,$(LinuxIncludePath))" \ + all + $(Verbose)touch $@ + +# Stage the build to a temporary installation area. +# +# We have to unset MAKEFLAGS since they confuse the package build otherwise. + +$(BuildDirectory)/stage: $(BuildDirectory)/build | $(ResultDirectory) + $(Verbose)unset MAKEFLAGS && \ + $(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \ + DESTDIR=$(ResultDirectory) \ + install + $(Verbose)touch $@ + +.PHONY: stage +stage: $(BuildDirectory)/stage + +clean: + $(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir) + $(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory) + $(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory) + +include post.mak
diff --git a/sp-oops-extract.patches/sp-oops-extract-50.description b/sp-oops-extract.patches/sp-oops-extract-50.description new file mode 100644 index 0000000..7aa6f5d --- /dev/null +++ b/sp-oops-extract.patches/sp-oops-extract-50.description
@@ -0,0 +1,2 @@ +This patch creates the necessary output directory to install the compiled +output.
diff --git a/sp-oops-extract.patches/sp-oops-extract-50.patch b/sp-oops-extract.patches/sp-oops-extract-50.patch new file mode 100644 index 0000000..b72df34 --- /dev/null +++ b/sp-oops-extract.patches/sp-oops-extract-50.patch
@@ -0,0 +1,9 @@ +diff --aruN a/Makefile b/Makefile +--- a/Makefile ++++ b/Makefile +@@ -12,4 +12,5 @@ distclean: clean + for i in $(SUBDIRS); do $(MAKE) -C $$i distclean; done + + install: ++ mkdir -p $(BIN) + install src/sp-oops-extract $(BIN)
diff --git a/sp-oops-extract.patches/sp-oops-extract-51.description b/sp-oops-extract.patches/sp-oops-extract-51.description new file mode 100644 index 0000000..154e5d5 --- /dev/null +++ b/sp-oops-extract.patches/sp-oops-extract-51.description
@@ -0,0 +1 @@ +Use $(CC) to pick up the correct cross compiler for compilation.
diff --git a/sp-oops-extract.patches/sp-oops-extract-51.patch b/sp-oops-extract.patches/sp-oops-extract-51.patch new file mode 100644 index 0000000..d8e301f --- /dev/null +++ b/sp-oops-extract.patches/sp-oops-extract-51.patch
@@ -0,0 +1,9 @@ +diff --aruN a/src/Makefile b/src/Makefile +--- a/src/Makefile ++++ b/src/Makefile +@@ -9,4 +9,4 @@ + $(RM) $(TARGETS) + + sp-oops-extract: oopslog.c +- gcc -Wall -s -o $@ $^ ++ $(CC) -Wall -s -o $@ $^
diff --git a/sp-oops-extract.patches/sp-oops-extract-52.description b/sp-oops-extract.patches/sp-oops-extract-52.description new file mode 100644 index 0000000..f1787fe --- /dev/null +++ b/sp-oops-extract.patches/sp-oops-extract-52.description
@@ -0,0 +1 @@ +Set the mtdoops record_size (a.k.a. "page size" from kernel module parameter or environment variable)
diff --git a/sp-oops-extract.patches/sp-oops-extract-52.patch b/sp-oops-extract.patches/sp-oops-extract-52.patch new file mode 100644 index 0000000..689013d --- /dev/null +++ b/sp-oops-extract.patches/sp-oops-extract-52.patch
@@ -0,0 +1,107 @@ +diff '--exclude=*~' -Nurp sp-oops-extract-0.0.7.orig/src/oopslog.c sp-oops-extract-0.0.7/src/oopslog.c +Index: sp-oops-extract-0.0.7/src/oopslog.c +=================================================================== +--- sp-oops-extract-0.0.7.orig/src/oopslog.c 2017-04-05 16:31:18.973231119 -0700 ++++ sp-oops-extract-0.0.7/src/oopslog.c 2017-04-05 16:31:18.965231155 -0700 +@@ -37,11 +37,18 @@ + #include <linux/fs.h> + #include <err.h> + #include <stdint.h> ++#include <stdlib.h> ++#include <limits.h> + +-#define OOPS_PAGE_SIZE 4096 ++#define DEFAULT_OOPS_PAGE_SIZE 4096 ++#define OOPS_PAGE_SIZE_ENV "OOPS_PAGE_SIZE" ++#define OOPS_RECORD_SIZE_PATH "/sys/module/mtdoops/parameters/record_size" ++#define INVALID_OOPS_PAGE_SIZE ULONG_MAX + + #define MEMGETINFO _IOR('M', 1, struct mtd_info_user) + ++unsigned long OOPS_PAGE_SIZE = DEFAULT_OOPS_PAGE_SIZE; ++ + struct mtd_info_user { + uint8_t type; + uint32_t flags; +@@ -55,6 +62,72 @@ + uint32_t eccsize; + }; + ++static unsigned long init_oops_page_size_from_env(void) ++{ ++ char *from_env = getenv(OOPS_PAGE_SIZE_ENV); ++ char *endptr = NULL; ++ unsigned long val = INVALID_OOPS_PAGE_SIZE; ++ ++ if (!from_env) { ++ return val; ++ } ++ ++ errno = 0; ++ val = strtoul(from_env, &endptr, 0); ++ if (from_env == endptr) { ++ // invalid value. Ignore it. ++ val = INVALID_OOPS_PAGE_SIZE; ++ } else if (val == ULONG_MAX && errno == ERANGE) { ++ // invalid value. Ignore it. ++ val = INVALID_OOPS_PAGE_SIZE; ++ } else { ++ // good read, using value. ++ } ++ ++ return val; ++} ++ ++static unsigned long init_oops_page_size_from_module(void) ++{ ++ FILE *fp = fopen(OOPS_RECORD_SIZE_PATH, "r"); ++ unsigned long val = INVALID_OOPS_PAGE_SIZE; ++ int items; ++ ++ if (!fp) { ++ return INVALID_OOPS_PAGE_SIZE; ++ } ++ ++ items = fscanf(fp, "%lu", &val); ++ fclose(fp); ++ if (items != 1) { ++ val = INVALID_OOPS_PAGE_SIZE; ++ } ++ ++ return val; ++} ++ ++// Set OOPS_PAGE_SIZE value from either environment (OOPS_PAGE_SIZE) ++// or from the kernel module parameter. ++static void init_oops_page_size(void) ++{ ++ unsigned long val; ++ ++ val = init_oops_page_size_from_env(); ++ ++ if (val == INVALID_OOPS_PAGE_SIZE) { ++ val = init_oops_page_size_from_module(); ++ } ++ ++ if (val != INVALID_OOPS_PAGE_SIZE) { ++ OOPS_PAGE_SIZE = val; ++ } ++ ++ fprintf(stderr, "Using OOPS_PAGE_SIZE=%lu\n", val); ++ if ((OOPS_PAGE_SIZE % 4096) != 0) { ++ fprintf(stderr, "Warning: OOPS_PAGE_SIZE is supposed to be a multiple of 4096\n"); ++ } ++} ++ + static int try_to_check_for_bad_blocks(void) { + /* FIXME + * Checking for bad blocks should be implemented here. +@@ -83,6 +156,8 @@ + + device = argv[1]; + ++ init_oops_page_size(); ++ + buf = malloc(OOPS_PAGE_SIZE); + if (!buf) { + err(-1, "Unable to allocate memory");
diff --git a/sp-oops-extract.tar.gz b/sp-oops-extract.tar.gz new file mode 100644 index 0000000..aa655c1 --- /dev/null +++ b/sp-oops-extract.tar.gz Binary files differ
diff --git a/sp-oops-extract.url b/sp-oops-extract.url new file mode 100644 index 0000000..19cee8f --- /dev/null +++ b/sp-oops-extract.url
@@ -0,0 +1 @@ +http://repository.maemo.org/pool/maemo5.0/free/s/sp-oops-extract/sp-oops-extract_0.0.7-1.tar.gz
diff --git a/sp-oops-extract.version b/sp-oops-extract.version new file mode 100644 index 0000000..5a5831a --- /dev/null +++ b/sp-oops-extract.version
@@ -0,0 +1 @@ +0.0.7