I am working on a python2.7 project. I set a process pool with 10 processes. My code structure is:
pool = Pool(10)
pool.map(ProcessJson, jsonFiles)
def ProcessJson(jsonpath):
# doing something and get (int)numUrls
for idx in xrange(numUrls):
flag = DownloadVideo(paras).run()
if flag == 0:
continue
class DownloadVideo():
def __init__(para):
# init
def run(self):
try:
videopath = os.path.join(folder, sname.encode("utf-8"))
try:
cmd = "wget -q -c --limit-rate=1M --tries=3 -T10 -P %s --output-document=%s \"%s\"" % (folder, videopath, url)
ret = os.system(cmd)
if (ret >> 8) != 0:
logger.error("cmd error---" + str(ret >> 8) + "---" + cmd + "\n")
return 0
except Exception as e:
logger.error("python system cmd error---", e)
return 0
except Exception as e1:
logger.error("exception with downloading---", e1)
return 0
After sometime, the process are all sleep. I use sudo strace -p pid and lsof -p pid to find the problem. What I get are showing:
sudo strace -p 27723
Process 27723 attached
wait4(-1,
Then i found its child process 27724
sudo strace -p 27724
Process 27724 attached
read(6,
cat wchan 27724
do_wait_data
:/proc/27724$ ls -l ./fd
l-wx------ 1 cwz domain^users 64 7月 12
16:20 3 -> Documents/tools/log/__main__-1.log
lr-x------ 1 cwz domain^users 64 7月 12
16:20 4 -> pipe:[8180487]
l-wx------ 1 cwz domain^users 64 7月 12 16:20 5 ->
chenweizhao/Documents/tools/GoogleImages-
1/Tim_Faraday/xXP4smHFrfLw9M.jpg
lrwx------ 1 cwz domain^users 64 7月 12 16:20 6 -> socket:
[8286859]
l-wx------ 1 cwz domain^users 64 7月 12
16:20 7 -> pipe:[8180490]
lr-x------ 1 cwz domain^users 64 7月 12
16:20 8 -> /dev/null
and
lsof -p 27724
wget 27724 cwz 3w REG 8,2 427352 5786641
chenweizhao/tools/log/__main__-1.log
wget 27724 cwz 4r FIFO 0,8 0t0 8180487 pipe
wget 27724 cwz 5w REG 8,2 24404 9971506
chenweizhao/tools/GoogleImages-1/Tim_Faraday/xXP4smHFrfLw9M.jpg
wget 27724 cwz 6u IPv4 8286859 0t0
TCP myIP:47496->ec2-13-56-87-172.us-west-1.compute.amazonaws.com:https
(ESTABLISHED)
wget 27724 cwz 7w FIFO 0,8 0t0
8180490 pipe
wget 27724 cwz 8r CHR 1,3 0t0 1029
/dev/null
How can I solve the problem? Thank you very much!
Related
Im translating a model done on weka to python-weka-wrapper3 and i dont know how to an evaluator and search options on attributeselectedclassifier.
This is the model on weka:
weka.classifiers.meta.AttributeSelectedClassifier -E "weka.attributeSelection.CfsSubsetEval -P 1 -E 1" -S "weka.attributeSelection.GreedyStepwise -B -T -1.7976931348623157E308 -N -1 -num-slots 1" -W weka.classifiers.meta.MultiSearch -- -E FM -search "weka.core.setupgenerator.MathParameter -property classifier.classifier.classifier.numOfBoostingIterations -min 5.0 -max 50.0 -step 1.0 -base 10.0 -expression I" -class-label 1 -algorithm "weka.classifiers.meta.multisearch.DefaultSearch -sample-size 100.0 -initial-folds 2 -subsequent-folds 10 -initial-test-set . -subsequent-test-set . -num-slots 1" -log-file /Applications/weka-3-8-3 -S 1 -W weka.classifiers.meta.Bagging -- -P 100 -S 1 -num-slots 1 -I 100 -W weka.classifiers.meta.FilteredClassifier -- -F "weka.filters.supervised.instance.SMOTE -C 0 -K 3 -P 250.0 -S 1" -S 1 -W weka.classifiers.meta.CostSensitiveClassifier -- -cost-matrix "[0.0 1.0; 1.0 0.0]" -S 1 -W weka.classifiers.trees.ADTree -- -B 10 -E -3 -S 1
and I have this right now:
base = Classifier(classname="weka.classifiers.trees.ADTree", options=["-B", "10", "-E", "-3", "-S", "1"])
cls = SingleClassifierEnhancer(classname="weka.classifiers.meta.CostSensitiveClassifier",
options =["-cost-matrix", "[0.0 1.0; 1.0 0.0]", "-S", "1"])
cls.classifier = base
smote = Filter(classname="weka.filters.supervised.instance.SMOTE", options=["-C", "0", "-K", "3", "-P", "250.0", "-S", "1"])
fc = FilteredClassifier()
fc.filter = smote
fc.classifier = cls
bagging_cls = Classifier(classname="weka.classifiers.meta.Bagging",
options=["-P", "100", "-S", "1", "-num-slots", "1", "-I", "100"])
bagging_cls.classifier = fc
multisearch_cls = MultiSearch(
options = ["-S", "1"])
multisearch_cls.evaluation = "FM"
multisearch_cls.log_file = "/home/pablo/Escritorio/TFG/OUTPUT.txt"
multisearch_cls.search = ["-sample-size", "100", "-initial-folds", "2", "-subsequent-folds", "10",
"-initial-test-set", ".", "-subsequent-test-set", ".", "-num-slots", "1"]
mparam = MathParameter()
mparam.prop = "numOfBoostingIterations"
mparam.minimum = 5.0
mparam.maximum = 50.0
mparam.step = 1.0
mparam.base = 10.0
mparam.expression = "I"
multisearch_cls.parameters = [mparam]
multisearch_cls.classifier = bagging_cls
AttS_cls = AttributeSelectedClassifier()
AttS_cls.evaluator = "weka.attributeSelection.CfsSubsetEval -P 1 -E 1"
AttS_cls.search = "weka.attributeSelection.GreedyStepwise -B -T -1.7976931348623157E308 -N -1 -num-slots 1"
AttS_cls.classifier = multisearch_cls
train, test = data_modelos_1_2.train_test_split(70.0, Random(1))
AttS_cls.build_classifier(train)
evl = Evaluation(train)
evl.crossvalidate_model(AttS_cls, test, 10, Random(1))
print(AttS_cls)
#graph.plot_dot_graph(AttS_cls.graph)
print("")
print("=== Setup ===")
print("Classifier: " + AttS_cls.to_commandline())
print("Dataset: ")
print(test.relationname)
print("")
print(evl.summary("=== " + str(10) + " -fold Cross-Validation ==="))
print(evl.class_details())
plcls.plot_roc(evl, class_index=[0, 1], wait=True)
but when I do
AttS_cls.evaluator = "weka.attributeSelection.CfsSubsetEval -P 1 -E 1"
AttS_cls.search = "weka.attributeSelection.GreedyStepwise -B -T -1.7976931348623157E308 -N -1 -num-slots 1"
it reach me this error:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/tmp/ipykernel_40724/2750622902.py in <module>
30
31 AttS_cls = AttributeSelectedClassifier()
---> 32 AttS_cls.search = "weka.attributeSelection.GreedyStepwise"
33 AttS_cls.classifier = multisearch_cls
34
/usr/local/lib/python3.8/dist-packages/weka/classifiers.py in search(self, search)
435 :type search: ASSearch
436 """
--> 437 javabridge.call(self.jobject, "setSearch", "(Lweka/attributeSelection/ASSearch;)V", search.jobject)
438
439
AttributeError: 'str' object has no attribute 'jobject'
I understand that I have to set them as objects because it raise this error because i try to set them as strings but I dont know how.
You need to instantiate ASSearch and ASEvaluation objects. If you have command-lines, you can use the from_commandline helper method like this:
from weka.core.classes import from_commandline, get_classname
from weka.attribute_selection import ASSearch
from weka.attribute_selection import ASEvaluation
search = from_commandline('weka.attributeSelection.GreedyStepwise -B -T -1.7976931348623157E308 -N -1 -num-slots 1', classname=get_classname(ASSearch))
evaluation = from_commandline('weka.attributeSelection.CfsSubsetEval -P 1 -E 1', classname=get_classname(ASEvaluation))
The second argument of the from_commandline method is the classname of the wrapper that you want to use instead of OptionHandler. For simplicity, I import the correct wrappers and then use the get_classname method to return the dot notation of the wrapper's class. That way I can avoid accidental typos in the classname strings.
Also, by using single quotes, you won't have to worry about Weka's quotes in the command-lines and you can just use the Weka command-line string verbatim.
You can also use the same approach for instantiating the AttributeSelectedClassifier wrapper itself, without having to go through instantiating search and evaluation separately:
from weka.core.classes import from_commandline, get_classname
from weka.classifiers import AttributeSelectedClassifier
cls = from_commandline('weka.classifiers.meta.AttributeSelectedClassifier -E "weka.attributeSelection.CfsSubsetEval -P 1 -E 1" -S "weka.attributeSelection.GreedyStepwise -B -T -1.7976931348623157E308 -N -1 -num-slots 1" -W weka.classifiers.meta.MultiSearch -- -E FM -search "weka.core.setupgenerator.MathParameter -property classifier.classifier.classifier.numOfBoostingIterations -min 5.0 -max 50.0 -step 1.0 -base 10.0 -expression I" -class-label 1 -algorithm "weka.classifiers.meta.multisearch.DefaultSearch -sample-size 100.0 -initial-folds 2 -subsequent-folds 10 -initial-test-set . -subsequent-test-set . -num-slots 1" -log-file /Applications/weka-3-8-3 -S 1 -W weka.classifiers.meta.Bagging -- -P 100 -S 1 -num-slots 1 -I 100 -W weka.classifiers.meta.FilteredClassifier -- -F "weka.filters.supervised.instance.SMOTE -C 0 -K 3 -P 250.0 -S 1" -S 1 -W weka.classifiers.meta.CostSensitiveClassifier -- -cost-matrix "[0.0 1.0; 1.0 0.0]" -S 1 -W weka.classifiers.trees.ADTree -- -B 10 -E -3 -S 1', get_classname(AttributeSelectedClassifier))
When I run pyodbc.connect(...) my python crashes and I get zsh: abort error in terminal.
Running:
Mac M1 Pro Monterey
Python 3.8.9
Installed MS ODBC drivers (tried 17 and 18).
Tried running in base Python and virtual environments.
In base python, I get the following system error:
Translated Report (Full Report Below)
Process: Python [1869]
Path: /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/Resources/Python.app/Contents/MacOS/Python
Identifier: com.apple.python3
Version: 3.8.9 (3.8.9)
Build Info: python3-103000000000000~1538
Code Type: ARM-64 (Native)
Parent Process: zsh [611]
Responsible: Terminal [80951]
User ID: 501
Date/Time: 2022-03-08 17:42:55.3063 +0200
OS Version: macOS 12.2.1 (21D62)
Report Version: 12
Anonymous UUID: 919246FC-3C09-6151-CCAB-05C65A4A9B63
Sleep/Wake UUID: 4CFF985F-843A-4C63-ABC8-97435300AADE
Time Awake Since Boot: 370000 seconds
Time Since Wake: 2014 seconds
System Integrity Protection: enabled
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Application Specific Information:
stack buffer overflow
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x18ff659b8 __pthread_kill + 8
1 libsystem_pthread.dylib 0x18ff98eb0 pthread_kill + 288
2 libsystem_c.dylib 0x18fed63a0 __abort + 128
3 libsystem_c.dylib 0x18fec818c __stack_chk_fail + 96
4 pyodbc.cpython-38-darwin.so 0x102c4f5d4 GetErrorFromHandle(Connection*, char const*, void*, void*) + 1024
5 pyodbc.cpython-38-darwin.so 0x102c4f188 RaiseErrorFromHandle(Connection*, char const*, void*, void*) + 16
6 pyodbc.cpython-38-darwin.so 0x102c48cf0 Connection_New(_object*, bool, bool, long, bool, _object*, Object&) + 1324
7 pyodbc.cpython-38-darwin.so 0x102c54b34 mod_connect(_object*, _object*, _object*) + 1468
8 Python3 0x103185968 cfunction_call_varargs + 140
9 Python3 0x103185368 _PyObject_MakeTpCall + 372
10 Python3 0x1032523fc call_function + 448
11 Python3 0x10324f800 _PyEval_EvalFrameDefault + 23692
12 Python3 0x1032532e4 _PyEval_EvalCodeWithName + 3048
13 Python3 0x103249ae0 PyEval_EvalCode + 60
14 Python3 0x10328f384 PyRun_InteractiveOneObjectEx + 712
15 Python3 0x10328e92c PyRun_InteractiveLoopFlags + 156
16 Python3 0x10328e84c PyRun_AnyFileExFlags + 72
17 Python3 0x1032ac808 Py_RunMain + 2120
18 Python3 0x1032acb1c pymain_main + 340
19 Python3 0x1032acb98 Py_BytesMain + 40
20 dyld 0x1029ed0f4 start + 520
(this is just a small extract of the report because I can't figure out how to "embed" the full report in a scrollable object in my post)
I have tried zsh: abort python error when I try to run the app in venv
Any help is appreciated.
I am working on a python app which includes a CEFPython3 browser inside the app. The app is getting correctly compiled and when I run our_app.py, everything works just fine. But when I package it with py2app, then I get these errors. What exactly is the problem? I tried searching other threads, but each user seems to have a different issue.
Note : In our app, we are setting a flag for GPU for CEFPython3 as disable-gpu=true
Error log :
{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf200
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww28600\viewh15000\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
\f0\fs24 \cf0 May 24 13:04:48 Akshays-MacBook-Air syslogd[46]: ASL Sender Statistics\
May 24 13:05:28 Akshays-MacBook-Air com.apple.xpc.launchd[1] (org.pythonmac.unspecified.APP_NAME.12348[954]): Service exited with abnormal code: 255\
May 24 13:05:37 Akshays-MacBook-Air sudo[964]: akshaysulakhe : TTY=ttys000 ; PWD=/Users/akshaysulakhe/Downloads/APP_NAMEwx ; USER=root ; COMMAND=/sbin/dmesg\
May 24 13:05:51 Akshays-MacBook-Air sudo[971]: akshaysulakhe : TTY=ttys000 ; PWD=/Users/akshaysulakhe/Downloads/APP_NAMEwx ; USER=root ; COMMAND=/sbin/dmesg\
May 24 13:06:09 Akshays-MacBook-Air com.apple.xpc.launchd[1] (com.apple.quicklook[973]): Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook\
May 24 13:07:04 Akshays-MacBook-Air sudo[974]: akshaysulakhe : TTY=ttys000 ; PWD=/Users/akshaysulakhe/Downloads/APP_NAMEwx ; USER=root ; COMMAND=/bin/launchctl remove com.cylance.agent_service\
May 24 13:07:10 Akshays-MacBook-Air com.apple.xpc.launchd[1] (org.pythonmac.unspecified.APP_NAME.12352[966]): Service exited with abnormal code: 255\
May 24 13:07:14 Akshays-MacBook-Air com.apple.xpc.launchd[1] (org.pythonmac.unspecified.APP_NAME.12356[976]): Service exited with abnormal code: 255\
May 24 13:07:19 Akshays-MacBook-Air com.apple.xpc.launchd[1] (com.apple.quicklook[981]): Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook\
May 24 13:07:35 Akshays-MacBook-Air com.apple.xpc.launchd[1] (org.pythonmac.unspecified.APP_NAME.12356[987]): Service exited with abnormal code: 255\
May 24 13:08:30 Akshays-MacBook-Air com.apple.xpc.launchd[1] (com.apple.quicklook[992]): Endpoint has been activated through legacy launch(3) APIs. Please switch to XPC or bootstrap_check_in(): com.apple.quicklook\
May 24 13:09:27 Akshays-MacBook-Air TextEdit[993]: assertion failed: 17D102: libxpc.dylib + 72637 [F7E5F1BC-614B-39CB-B6CE-92A9C7B7EC0B]: 0x89\
May 24 13:09:28 Akshays-MacBook-Air com.apple.xpc.launchd[1] (com.apple.imfoundation.IMRemoteURLConnectionAgent): Unknown key for integer: _DirtyJetsamMemoryLimit\
May 24 13:12:19 Akshays-MacBook-Air com.apple.xpc.launchd[1] (com.apple.imfoundation.IMRemoteURLConnectionAgent): Unknown key for integer: _DirtyJetsamMemoryLimit\
}
Crash_log :
{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf200
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0
\f0\fs24 \cf0 Process: APP_NAME [846]\
Path: /Users/USER/Downloads/*/APP_NAME.app/Contents/MacOS/APP_NAME\
Identifier: org.pythonmac.unspecified.APP_NAME\
Version: 0.0.0 (0.0.0)\
Code Type: X86-64 (Native)\
Parent Process: ??? [1]\
Responsible: APP_NAME [846]\
User ID: 501\
\
Date/Time: 2018-05-24 12:44:16.609 +0530\
OS Version: Mac OS X 10.13.3 (17D102)\
Report Version: 12\
Anonymous UUID: 83F4A79A-60D6-23EF-2BDC-2B052BA014A7\
\
Sleep/Wake UUID: CE376F54-DDE9-4CB5-960D-A08762CAFD0C\
\
Time Awake Since Boot: 7900 seconds\
Time Since Wake: 1900 seconds\
\
System Integrity Protection: enabled\
\
Crashed Thread: 0 Dispatch queue: com.apple.main-thread\
\
Exception Type: EXC_BAD_INSTRUCTION (SIGILL)\
Exception Codes: 0x0000000000000001, 0x0000000000000000\
Exception Note: EXC_CORPSE_NOTIFY\
\
Termination Signal: Illegal instruction: 4\
Termination Reason: Namespace SIGNAL, Code 0x4\
Terminating Process: exc handler [0]\
\
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread\
0 org.chromium.ContentShell.framework 0x0000000107e5e1f7 0x106a38000 + 21127671\
1 org.chromium.ContentShell.framework 0x0000000107e87e4e 0x106a38000 + 21298766\
2 org.chromium.ContentShell.framework 0x0000000107e87c44 0x106a38000 + 21298244\
3 org.chromium.ContentShell.framework 0x0000000106a3a2c4 cef_initialize + 276\
4 cefpython_py36.so 0x0000000106931213 CefInitialize(CefMainArgs const&, CefStructBase<CefSettingsTraits> const&, scoped_refptr<CefApp>, void*) + 163\
5 cefpython_py36.so 0x00000001068d20ff __pyx_pf_14cefpython_py36_22Initialize(_object*, _object*, _object*, _object*) + 43535\
6 cefpython_py36.so 0x00000001068c74d4 __pyx_pw_14cefpython_py36_23Initialize(_object*, _object*, _object*) + 164\
7 org.python.python 0x0000000101867685 _PyCFunction_FastCallDict + 229\
8 org.python.python 0x00000001018678a8 _PyCFunction_FastCallKeywords + 136\
9 org.python.python 0x00000001018f05e4 call_function + 612\
10 org.python.python 0x00000001018f2506 _PyEval_EvalFrameDefault + 6918\
11 org.python.python 0x00000001018f032e fast_function + 606\
VIRTUAL REGION \
REGION TYPE SIZE COUNT (non-coalesced) \
=========== ======= ======= \
Activity Tracing 256K 2 \
CoreUI image file 116K 2 \
Kernel Alloc Once 8K 2 \
MALLOC 52.9M 46 \
MALLOC guard page 32K 9 \
MALLOC_LARGE (reserved) 512K 3 reserved VM address space (unallocated)\
STACK GUARD 56.0M 7 \
Stack 10.5M 7 \
VM_ALLOCATE 40K 4 \
__DATA 40.6M 321 \
__FONT_DATA 4K 2 \
__LINKEDIT 201.1M 36 \
__TEXT 329.0M 319 \
__UNICODE 560K 2 \
mapped file 33.5M 5 \
shared memory 628K 10 \
=========== ======= ======= \
TOTAL 725.8M 761 \
TOTAL, minus reserved VM space 725.3M 761 \
\
}
setup.py from py2app :
from setuptools import setup
APP = ['Our_APP.py']
DATA_FILES = []
OPTIONS = {}
setup(
app=APP,
data_files=DATA_FILES,
options={'py2app': OPTIONS},
setup_requires=['py2app','cefpython3'],
)
See how the exit code 255 is handled in the wxpython.py example:
if MAC:
# On Mac things work differently, other steps are required
self.browser.CloseBrowser()
self.clear_browser_references()
self.Destroy()
global g_count_windows
g_count_windows -= 1
if g_count_windows == 0:
cef.Shutdown()
wx.GetApp().ExitMainLoop()
# Call _exit otherwise app exits with code 255 (Issue #162).
# noinspection PyProtectedMember
os._exit(0)
Full source:
https://github.com/cztomczak/cefpython/blob/2fb9ae156802c12b9941f61661318386dbf3bfe2/examples/wxpython.py#L167
Corresponding issue in the tracker:
https://github.com/cztomczak/cefpython/issues/162
I have a project with many subdirectories and types of files (python, c++, configuration files, images, etc).
When I use SCons env.Package like this:
env.Package(
NAME = 'isid',
VERSION = '1.0',
PACKAGEVERSION = '11',
PACKAGETYPE = 'rpm',
LICENSE = 'gpl',
SUMMARY = 'just a test',
DESCRIPTION = 'the most test app in the world',
X_RPM_GROUP = 'Application/isid',
SOURCE_URL = 'http://isid.com/versions/isid-1.0.11.tar.gz',
)
I get everything in isid-1.0.11.tar.gz except for the h files.
This automatically leads to build errors in ./isid-1.0.11 that stops rpmbuild from running.
EDIT
My project is split into few subdirectories.
In each I have SConscript that starts with these lines, or similar, depending on the includes it needs:
# import all variables
Import('*')
include = Dir([
'../inc/',
])
local_env = env.Clone( CPPPATH = include )
SConstruct just defines the variables and calls SConscript() on each subdirectory.
The call to Package is done in SConstruct, so I guess SCons indeed does not know the dependencies.
snippet of
# scons --tree=prune:
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
scons: `.' is up to date.
+-.
+-SConstruct
+-correlator
| +-correlator/SConscript
| +-correlator/collector
| +-correlator/correlation_command
| | +-correlator/correlation_command/app_command_device.cpp
| | +-correlator/correlation_command/app_command_device.h
| | +-correlator/correlation_command/app_command_device.o
| | | +-correlator/correlation_command/app_command_device.cpp
| | | +-correlator/correlation_command/app_command_device.h
| | | +-correlator/entity/entity.h
| | | +-infra/inc/app_command/app_command.h
| | | +-/bin/g++
| | +-correlator/correlation_command/app_command_event.cpp
| | +-correlator/correlation_command/app_command_event.h
EDIT #2
Here is a complete, minimal, example that produces the same problem.
To reproduce the problem, run:
scons pack=1.0 ver=1
files:
SConstruct.
app1/SConscript
app1/main.cpp
app1/inc.h
Listing
SConstruct
1
2 # main file
3
4 env = Environment(tools=['default', 'packaging'])
5
6 Export( 'env' )
7
8 flags = [
9 '-Wall',
10 '-Werror',
11 '-g',
12 '-ggdb3',
13 '-gdwarf-2',
14 '-std=c++11',
15 ]
16
17 env.Append( CPPFLAGS = flags )
18
19
20 scripts = []
21
22 Sapp1 = 'app1/SConscript'
23 scripts.append( Sapp1 )
24
25
26 env.SConscript( scripts )
27
28 pack = ARGUMENTS.get('pack', '')
29 ver = ARGUMENTS.get('ver', '99' )
30 if pack:
31 env.Package(
32 NAME = 'app1',
33 VERSION = pack,
34 PACKAGEVERSION = ver,
35 PACKAGETYPE = 'rpm',
36 LICENSE = 'private',
37 SUMMARY = 'exampe app #1',
38 DESCRIPTION = 'the most powerfull exampe #1',
39 X_RPM_GROUP = 'Application/app1',
40 SOURCE_URL = 'http://example.com/1/app1-1.0.1.tar.gz',
41 )
42
app1/SConscript
1
2 # import all variables
3 Import('*')
4
5 # add specific include directory
6
7 include = Dir( [
8 '.',
9 ])
10
11 local_env = env.Clone( CPPPATH = include )
12
13 # define sources
14 sources = [
15 'main.cpp',
16 ]
17
18 libs = [
19 ]
20
21 main_name = 'app1',
22
23 main_obj = local_env.Program( target = main_name, source = sources, LIBS = libs )
24
25 # install
26 install_dir = '/opt/rf/app1'
27 install_files = [ main_obj ]
28
29 local_env.Install( dir = install_dir, source = install_files )
30 local_env.Command( install_dir, install_files, "chown -R rf:rfids $TARGET" )
31
32
33 local_env.Alias( 'install', install_dir )
app1/main.cpp
1
2 #include "inc.h"
3
4
5 int main()
6 {
7 int l = g;
8
9 return l;
10 }
app1/inc.h
1
2 int g = 100;
output:
# scons pack=1.0 ver=1
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o app1/main.o -c -Wall -Werror -g -ggdb3 -gdwarf-2 -std=c++11 -Iapp1 app1/main.cpp
g++ -o app1/app1 app1/main.o
LC_ALL=C rpmbuild -ta /home/ran/work/rpmexample/app1-1.0.1.tar.gz
scons: *** [app1-1.0-1.src.rpm] app1-1.0-1.src.rpm: Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.wU9lDZ
+ umask 022
+ cd /home/ran/work/rpmexample/rpmtemp/BUILD
+ '[' -n /home/ran/work/rpmexample/rpmtemp/BUILDROOT/app1-1.0-1.x86_64 -a /home/ran/work/rpmexample/rpmtemp/BUILDROOT/app1-1.0-1.x86_64 '!=' / ']'
+ rm -rf /home/ran/work/rpmexample/rpmtemp/BUILDROOT/app1-1.0-1.x86_64
+ cd /home/ran/work/rpmexample/rpmtemp/BUILD
+ rm -rf app1-1.0
+ /usr/bin/gzip -dc /home/ran/work/rpmexample/app1-1.0.1.tar.gz
+ /usr/bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd app1-1.0
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.gVaX4j
+ umask 022
+ cd /home/ran/work/rpmexample/rpmtemp/BUILD
+ cd app1-1.0
+ '[' '!' -e /home/ran/work/rpmexample/rpmtemp/BUILDROOT/app1-1.0-1.x86_64 -a /home/ran/work/rpmexample/rpmtemp/BUILDROOT/app1-1.0-1.x86_64 '!=' / ']'
+ mkdir /home/ran/work/rpmexample/rpmtemp/BUILDROOT/app1-1.0-1.x86_64
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.JWAdxE
+ umask 022
+ cd /home/ran/work/rpmexample/rpmtemp/BUILD
+ '[' /home/ran/work/rpmexample/rpmtemp/BUILDROOT/app1-1.0-1.x86_64 '!=' / ']'
+ rm -rf /home/ran/work/rpmexample/rpmtemp/BUILDROOT/app1-1.0-1.x86_64
++ dirname /home/ran/work/rpmexample/rpmtemp/BUILDROOT/app1-1.0-1.x86_64
+ mkdir -p /home/ran/work/rpmexample/rpmtemp/BUILDROOT
+ mkdir /home/ran/work/rpmexample/rpmtemp/BUILDROOT/app1-1.0-1.x86_64
+ cd app1-1.0
+ scons --install-sandbox=/home/ran/work/rpmexample/rpmtemp/BUILDROOT/app1-1.0-1.x86_64 /home/ran/work/rpmexample/rpmtemp/BUILDROOT/app1-1.0-1.x86_64
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
g++ -o app1/main.o -c -Wall -Werror -g -ggdb3 -gdwarf-2 -std=c++11 -Iapp1 app1/main.cpp
app1/main.cpp:2:17: fatal error: inc.h: No such file or directory
#include "inc.h"
^
compilation terminated.
scons: *** [app1/main.o] Error 1
scons: building terminated because of errors.
error: Bad exit status from /var/tmp/rpm-tmp.JWAdxE (%install)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.JWAdxE (%install)
scons: building terminated because of errors.
I have the following piece of code:
import pi
from pi.becore import ScarlettConfig
from recorder import Recorder
from brain import Brain
import os
import json
import tempfile
#import sys
import pygtk
pygtk.require('2.0')
import gtk
import gobject
import pygst
pygst.require('0.10')
gobject.threads_init()
import gst
scarlett_config=ScarlettConfig()
class Listener:
def __init__(self, gobject, gst):
self.failed = 0
# scarlettPi ( mmj2f I added this after attempting the scarlettPi change )
self.recording = tempfile.mktemp(suffix='pi.wav')
self.pipeline = gst.Pipeline("mypipeline")
# alsasrc - we'll use this to connect our ps3 eye and record
gst.debug("Adding alsasrc")
self.source = gst.element_factory_make("alsasrc", "alsasrc")
self.source.set_property("device", scarlett_config.gimmie('audio_input_device'))
self.pipeline.add(self.source)
# add a queue to allow pocketsphinx to recognize more data
gst.debug("Adding encoding queue")
self.qone = gst.element_factory_make("queue", "qone")
self.pipeline.add(self.qone)
# audio convert
gst.debug("Adding encoding audioconvert")
self.recfileconvert = gst.element_factory_make("audioconvert", "recfileconvert")
self.pipeline.add(self.recfileconvert)
# resample the wav
gst.debug("Adding encoding audioresample")
self.resample = gst.element_factory_make("audioresample", "resample")
self.pipeline.add(self.resample)
# Add our tee
gst.debug("Adding tee")
self.rectee = gst.element_factory_make("tee", "rectee")
self.pipeline.add(self.rectee)
# taken from: http://www.jonobacon.org/files/recgui-works.py
# link tee to alsasrc
gst.debug("Linking alsasrc to tee")
self.source.link(self.rectee)
gst.debug("Adding encoding queue")
self.qtwo = gst.element_factory_make("queue", "qtwo")
self.pipeline.add(self.qtwo)
gst.debug("Adding vader element")
self.vader = gst.element_factory_make("vader","vader")
self.vader.set_property("auto-threshold",False)
self.pipeline.add(self.vader)
gst.debug("Adding pocketsphinx element")
self.pocketsphinx = gst.element_factory_make("pocketsphinx","listener")
print "Pocketsphinx: "
print dir( self.pocketsphinx )
self.pocketsphinx.set_property("lm",scarlett_config.gimmie('LM'))
self.pocketsphinx.set_property("dict",scarlett_config.gimmie('DICT'))
self.pocketsphinx.set_property("hmm",scarlett_config.gimmie('HMM'))
gst.debug("Adding fakesink")
self.fakesink = gst.element_factory_make("fakesink", "fakesink")
self.fakesink.set_property("dump", True)
self.pipeline.add(self.fakesink)
# Linking fakesink to tee
# taken from: http://www.jonobacon.org/files/recgui-works.py
gst.debug("Linking fakesink to tee")
self.fakesink.link(self.rectee)
# creating valve now
gst.debug("Adding Valve element")
self.recording_valve = gst.element_factory_make('valve')
self.record_valve.set_property("drop",False)
self.pipeline.add(self.recording_valve)
# another queue
gst.debug("Adding encoding queue")
self.recording_valve_queue = gst.element_factory_make("queue", "recording_valve_queue")
self.pipeline.add(self.recording_valve_queue)
self.recording_valve.link (self.recording_valve_queue)
# adding wavenc element
gst.debug("Adding wavenc")
self.wavenc = gst.element_factory_make("wavenc", "wavenc")
self.pipeline.add(self.wavenc)
# adding filesink element
gst.debug("Adding filesink")
self.filesink = gst.element_factory_make("filesink", "filesink")
self.filesink.set_property("location", self.recording)
self.filesink.set_property("async", False)
self.pipeline.add(self.filesink)
# lets add the static pads now and link them?
# NOTE: Not sure if this is correct at all:
# self.rectee_pad = self.rectee.get_request_pad("src%d")
# print "Obtained request pad %s for audio branch."% self.rectee_pad.get_name()
self.rectee.get_request_pad('src%d').link(self.recording_valve_queue.get_pad('sink'))
self.rectee.get_request_pad('src%d').link(self.qtwo.get_pad('sink'))
# Original code going forward:
listener = self.pipeline.get_by_name('listener')
listener.connect('result', self.__result__)
listener.set_property('configured', True)
print "KEYWORDS WE'RE LOOKING FOR: " + scarlett_config.gimmie('ourkeywords')
......ETC..........
And I'm getting this error when I try to run my script:
pi#scarlettpi ~/dev/scarlettPi/scripts/pi $ pi
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
warnings.warn(str(e), _gtk.Warning)
INFO: cmd_ln.c(691): Parsing command line:
gst-pocketsphinx \
-samprate 8000 \
-cmn prior \
-fwdflat no \
-bestpath no \
-maxhmmpf 2000 \
-maxwpf 20
Current configuration:
[NAME] [DEFLT] [VALUE]
-agc none none
-agcthresh 2.0 2.000000e+00
-alpha 0.97 9.700000e-01
-ascale 20.0 2.000000e+01
-aw 1 1
-backtrace no no
-beam 1e-48 1.000000e-48
-bestpath no no
-bestpathlw 9.5 9.500000e+00
-bghist no no
-ceplen 13 13
-cmn current prior
-cmninit 8.0 8.0
-compallsen no no
-debug 0
-dict
-dictcase no no
-dither no no
-doublebw no no
-ds 1 1
-fdict
-feat 1s_c_d_dd 1s_c_d_dd
-featparams
-fillprob 1e-8 1.000000e-08
-frate 100 100
-fsg
-fsgusealtpron yes yes
-fsgusefiller yes yes
-fwdflat yes no
-fwdflatbeam 1e-64 1.000000e-64
-fwdflatefwid 4 4
-fwdflatlw 8.5 8.500000e+00
-fwdflatsfwin 25 25
-fwdflatwbeam 7e-29 7.000000e-29
-fwdtree yes yes
-hmm
-input_endian little little
-jsgf
-kdmaxbbi -1 -1
-kdmaxdepth 0 0
-kdtree
-latsize 5000 5000
-lda
-ldadim 0 0
-lextreedump 0 0
-lifter 0 0
-lm
-lmctl
-lmname default default
-logbase 1.0001 1.000100e+00
-logfn
-logspec no no
-lowerf 133.33334 1.333333e+02
-lpbeam 1e-40 1.000000e-40
-lponlybeam 7e-29 7.000000e-29
-lw 6.5 6.500000e+00
-maxhmmpf -1 2000
-maxnewoov 20 20
-maxwpf -1 20
-mdef
-mean
-mfclogdir
-min_endfr 0 0
-mixw
-mixwfloor 0.0000001 1.000000e-07
-mllr
-mmap yes yes
-ncep 13 13
-nfft 512 512
-nfilt 40 40
-nwpen 1.0 1.000000e+00
-pbeam 1e-48 1.000000e-48
-pip 1.0 1.000000e+00
-pl_beam 1e-10 1.000000e-10
-pl_pbeam 1e-5 1.000000e-05
-pl_window 0 0
-rawlogdir
-remove_dc no no
-round_filters yes yes
-samprate 16000 8.000000e+03
-seed -1 -1
-sendump
-senlogdir
-senmgau
-silprob 0.1 1.000000e-01
-smoothspec no no
-svspec
-tmat
-tmatfloor 0.0001 1.000000e-04
-topn 4 4
-topn_beam 0 0
-toprule
-transform legacy legacy
-unit_area yes yes
-upperf 6855.4976 6.855498e+03
-usewdphones no no
-uw 1.0 1.000000e+00
-var
-varfloor 0.0001 1.000000e-04
-varnorm no no
-verbose no no
-warp_params
-warp_type inverse_linear inverse_linear
-wbeam 7e-29 7.000000e-29
-wip 1e-4 1.000000e-04
-wlen 0.025625 2.562500e-02
Traceback (most recent call last):
File "/usr/local/bin/pi", line 5, in <module>
pkg_resources.run_script('pi==0.1.0', 'pi')
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 499, in run_script
self.require(requires)[0].run_script(script_name, ns)
File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1235, in run_script
execfile(script_filename, namespace, namespace)
File "/usr/local/lib/python2.7/dist-packages/pi-0.1.0-py2.7.egg/EGG-INFO/scripts/pi", line 38, in <module>
listener = Listener(gobject, gst)
File "/usr/local/lib/python2.7/dist-packages/pi-0.1.0-py2.7.egg/pi/listener.py", line 103, in __init__
self.pocketsphinx.link(self.rectee)
gst.LinkError: failed to link listener with rectee
I'm trying to do the following suggestion, but i'm not sure if i'm doing it correctly:
https://stackoverflow.com/a/18228933/814221
Can anyone help me understand what i'm doing wrong fundamentally?
Thanks!
You are missing the capsfilters.