2014-11-12 1 views
0

SCons를 사용하기에 비교적 큰 시스템의 건물을 이전하려고합니다. 빌드 상태에 대한 웹 사이트를 업데이트하는 사용자 지정 빌드 보고서 기능을 추가하고 싶습니다. 작업의 시작을 나타내는 사용자 지정 메시지를 서버에 게시하고 작업 완료 후에 유사한 메시지를 게시합니다. 그러나 나는 그 부름을 할만한 적절한 장소를 찾기 위해 고심하고있다.SCons에서 실제 컴파일 전과 후에 사용자 정의 빌드 보고서를 추가하는 방법은 무엇입니까?

내가 구현하는 빌드 시스템은 일반적이어야합니다. 즉, 빌드 동작이 무엇이든 상관없이이를 수행해야합니다. 명령을 실행하거나 사용자 정의 함수를 실행할 수 있습니다.

소스 코드에서 _ActionAction()의 _ _call__ 메소드가 작동 할 때 추가 기능이 추가되었습니다. 그러나 나는 SCons의 소스 코드를 수정하지 않고 이것을하고 싶다.

if execute: 
    if chdir: 
     os.chdir(chdir) 
    try: 
     # add custome before execution report function 
     stat = self.execute(target, source, env, executor=executor) 
     # add custome after execution report function 
     if isinstance(stat, SCons.Errors.BuildError): 
      s = exitstatfunc(stat.status) 
      if s: 
       stat.status = s 
      else: 
       stat = s 
     else: 
      stat = exitstatfunc(stat) 
    finally: 
     if save_cwd: 
      os.chdir(save_cwd) 

아마 PRINT_CMD_LINE_FUNC에서 사전 컴파일 액션 보고서 작업을 수행 할 수 있습니다,하지만 난 액션 보고서를 컴파일 한 후-비슷한 아무것도 찾지 못했습니다.

AddPreActionAddAfterAction 내가 원하는 것을 수행하지만 모든 동작에 대한 보고서 기능을 추가하려면 먼저 사전 동작 및 후 조치를 추가하기 전에 동작 개체가 무엇인지 알아야합니다. 각자 하나씩.

도움 주셔서 감사합니다.

답변

1

나는 당신이 성취하고자하는 것을 100 % 확신하고 있지 않습니다. 필자는 "myenv.MyBuilder (...)"라고 부를 수있는 빌더를 정의하고자한다고 가정하고 "기본 작업 수행"해야합니다. 그러나 실제 명령 줄 전후에 log/info 메시지를 내야합니다.

이 경우, 하나의 조치 대신 작성자의 "action ="키워드를 조치리스트로 정의 할 수 있습니다. 목록의 단일 항목은 문자열 하나 (단일 명령 행) 또는 함수 (callable) 중 하나 일 수 있습니다 (단일 조치의 경우). 그러면 대상이 작성자에 의해 작성되어야 할 때마다 단일 조치가 순차적으로 실행됩니다.

+0

감사합니다. dirkbaechle. 이것은 내 문제를 해결했다. –

관련 문제