ics 소스를 svn 에 올렸습니다.
올릴때 svn import 할 때 옵션을 -m --no-ignore 로 해서 올렸죠.
그리고 다시 checkout 해서 컴파일을 하니...
다음과 같은 에러가 나네요.
ICS filesystem make
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.0.3
TARGET_PRODUCT=am335xevm
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=IML74K
============================================
build/core/base_rules.mk:166: *** libcore: MODULE.TARGET.ETC.target-cacert-d64f06f3.0.svn-base already defined by libcore. 멈춤.
당최 뭔일인지... 옵션이 잘못되었는지..
svn 과 관련된 에러같기는 한데 뭔일인지 모르겠네요...
혹시 이런 경험 하신분 없으신가요???
댓글 12
-
YYS
2013.08.27 14:04
-
김영일
2013.08.27 19:54
답변감사합니다. 근데 build 할때 mk 라면 위에 있는 build/core/base_rules.mk 말고 다른 것을 말씀하시는 건가요?
ics make 파일을 보니
### DO NOT EDIT THIS FILE ###
include build/core/main.mk
### DO NOT EDIT THIS FILE ###이런 부분이 있기는 한데요...
-
YYS
2013.08.28 10:24
네
include 니깐 include build/core/main.mk 저 파일부터 찾아 보셔야 할 꺼 같은데요.
근데 제 경험에.. checkout으로 당기면 숨겨있는 폴더때문에 컴파일이 안될 때가 있었던거 같아요.
checkout 말고 export 로 받아서 컴파일 해보세요.
도움이 되셨으면 좋겠내요.
-
김영일
2013.08.29 19:39
잘 알겠습니다...어쩜.. 그냥 썼다가 또 안된다고 난리 났을 뻔 했네요..
좋은 정보 감사합니다.
-
YYS
2013.08.29 17:49
해결하셨다니 다행이내요ㅋ
window용 git 툴이 몇개 있기는 한데..
정말 비추천이에요..ㅠ
저는 extension 을사용 하였었는데..
repo를 사용하여 전체 git 을 sync 할 때 git 프로세스를 기하급수적으로 만들어 컴터가 멈추는 경우가 있더라고요..ㅎ
GUI 보단 커맨드로 사용하시는게 좋을..듯 싶습니다..
-
김영일
2013.08.30 13:01
엡...감사합니다. ckw 도 한번 사용을 해봐야겠네요..
자료 감사드립니다..
-
아폴로
2013.08.30 10:17
윈도용이 있어서 처음 익히기에도 좋고 커맨드라인으로 리눅스 명령어들을 실행하기도 좋은데 설정이 좀 번거롭습니다.
한글 설정, 윈도의 cmd대신 ckw 쓰기, vim plugin 설치와 설정, find와 gcc 설치 등등을 해야 겨우 리눅스 환경과 비슷해집니다.
그럼에도 불구하고 대소문자 구분은 결국 해결 못해서, 리눅스 커널은 clone을 해도 변경되는 소스가 생깁니다.
하지만, 일단 설치해 놓으면 윈도에서 작성하는 모든 문서를 git으로 관리할 수 있고,
대소문자와 약간의 한글문제 외에는 거의 비슷하게 리눅스처럼 사용할 수 있는 장점이 있어서 저는 윈도용 git을 사용중입니다.
윈도용 git은 http://www.git-scm.com/ 에서 다운받으실 수 있구요,
환경설정은 http://gypark.pe.kr/wiki/Git 이곳을 참조하시면 왠만한건 해결하실 수 있을겁니다.^^
cmd 대신 사용하는 ckw는 첨부파일로 올릴게요^^
-
김영일
2013.08.29 16:20
제가 확인해 보니 .svn 파일만 지우면 컴파일이 정상적으로 되더군요.
그리고 제가 수정한 파일을 import 해서 올리지 않고 원본 파일, 그러니까 수정이 하나도 안된 원초적인 파일을 import 한 후
수정된 부분을 commit 해서 사용하면 아무 문제 없이 정상적으로 컴파일이 되더군요.
어인일로 컴파일 할 때 .svn 에 있는 내용이 참조되는 것인지 모르겠네요...
최신 거북이 svn 1.7 이상의 버젼의 경우는 sqllite 를 사용하여 .svn 폴더가 최상위 폴더에만 생성되도록
재구성 한다고 하더군요.
import는 linux 에서 해도 checkout 은 최신의 거북이 svn 으로 하게 되면 위의 문제가 해결이 되지 않을까 싶습니다.
어쨋든 결론은 말씀하신 것처럼 우연히 발생한 svn+android 조합으로 인한 에러로 보입니다.
그래서 요즘은 전부 GIT 로 쓰는가 봐요. 저희도 GIT 로 바꿔야 될지 모르겠는데, 아직 window 에 익숙한 사람들이
많아서리... window용 GIT 툴이 있는지 확인해 봐야 겠네요...
답변 감사합니다...
-
K
2013.08.29 13:36
svn의 메커니즘은 각 디렉토리 마다 .svn 디렉토리가 있어서, checkout/update 시점의 모든 파일들의 사본을 .svn에 보관합니다. 이런 메커니즘으로 인해 svn에서 어떤 파일이 수정되었는지를 확인하고자 할 때 central repository에 접근하지 않고도 diff가 가능해집니다. cvs에 비해 개선된 부분이지요...
android 빌드를 위한 makefile들은 특정 디렉토리의 특정 makefile들로 구성된 것이 아니라 서브 디렉토리에 있는 *.mk 파일들을 모두(라기 보다는 대부분) include 하는 것 같습니다. 따라서 프로젝트 모듈을 손쉽게 추가/제거 할 수 있습니다.
따라서 svn+android의 조합에서 탄생한 에러로 봐도 되지 않을까요? ^^;;
-
김영일
2013.08.29 13:10
순수하게 프로젝트 파일만 가져왔더니 정상적으로 컴파일이 되네요..
음..왜 그런지 더 헥갈리네요... 뭐가 문제인지...ㅠ.ㅠ....
어디서 svn 파일을 첨조 하는 것인지....
-
오시리스
2013.08.31 18:06
안드로이드에서 "~already define ~"관련 에러는 해당 mk 파일을 2번 이상 include 하기 때문에 발생합니다. 그리고 makefile에서 mk파일을 include 할 때, find 명령으로 읽어들이기 때문에 .svn 디렉터리는 필터링이 안되는 것이고요. svn은 디렉토리 단위로 관리되기에, 그런 현상이 나타날 수 도 있습니다. 그런데, 제가 진행했던 프로젝트에서는 나타나지 않았었는데 좀 이상하네요.(아마 단순히 해결하자면 find-leaves.sh이었나 그쪽을 고치면 되지 싶습니다.)
그리고, git을 쓰는 대부분의 회사들의 사용 이유가 android가 그것을 바탕으로 하기 때문이기도 하지만, 이슈 트래커 사용 시, 해당 패치의 적용/비 적용이 svn에 비해 용이하기 때문입니다. git의 장점이지만, 중간에 한 단계가 더 생기고, 이슈 트래커 관리 때문에 작업이 지나지게 복잡해집니다. 하지만, android 커스터마이징이나 대형 프로젝트가 아닌데, 굳이 repo/git 환경으로 전환하는 것은 효율 면에서 별로 안 좋아 보입니다. 차라리 svn 을 주력으로 쓰시는 그룹이라면, 프로젝트를 git으로 전환하기 보다, 개발자 개인이 git-svn을 쓰시는 걸 추천합니다. repo sync 조합으로 가게 되면, 1개의 저장소가 아니라 android 하부 프로젝트 구조로 나뉘기 때문에, 오히려 svn에 비해 push/pull 속도의 이점도 없고, 모든 개발자에게 적응 시키기가 꽤 힘들어질테고, 크게 이점이 없어집니다(repo 없애고, git만 달랑 쓰는 것도 방법이긴 하지만... 뭐 여러가지 문제가 있겠죠)
그리고 어차피 build를 위해서도 리눅스 환경에서 하실 텐데, 그렇다면 windows에 source를 올릴 이유는 없어 보입니다만... 혹시 다른 분들이 source insight 를 강조(!!)하시기 때문이라면, 그냥, ubuntu+virtualbox 설치하고, shared folder로 운영 하는 게 편할 것 같습니다. build 서버라면, 좀 이야기가 달라지지만....
source를 windows에 다루는 환경일 때, 결국 svn에 올리게 되면, compile 하지 않고 올린다는 의미가 되니까, 좀 문제가 되지 않나 싶네요.
git-scm의 git은 3년전에 "winsock을 직접 쓰지 못하고, emulation 해서 쓰기 때문에, linux에 비해 속도 상 불이익이 있다"고 글을 본 적이 있는데요. 그건 현재도 마찬가지 인 것 같습니다. 아마, msys의 socket 구현체가 그랬다더라 하는 카더라 인데... ssh 속도가 virtualbox 안에 그것보다 10배 가량 느린 걸 보면 맞는 것 같네요. -
김영일
2013.09.02 09:20
오호~~ 그런 이유가 있었군요...
제가 이전과 비교해서 생각해보니 이번에 올린 소스들은 칩밴더에게 받은 안드로이드 소스를 1차 수정해서 올릴 것들이죠...
그래서 아마 .svn 파일에 컴파일에 필요한 매크로 등등이 그냥 설정되어 버린 것으로 생각됩니다.
그다음 find 로 읽어들이니 문제가 되겠죠...
이전에는 한번도 이런 일이 없었는데 그때는 우선 소스를 받으면 우선적으로 svn 에 import 를 한 다음 변경된 소스를 merge
한 후 commit 하는 방식이었죠.. 이렇게 하면 일단 환경설정과 관련된 부분들은 svn 에 올라가지 않으니 다른 사람들이 checkout 한 다음 컴파일해도 별 문제가 안 됐던 거죠...
그리고 말씀하신 virtual box 를 사용하는 부분은 제가 이전에 테스트를 해봤는데요...
컴파일 하는데만 워낙이 시간이 걸려서리...ㅠ.ㅠ....
물론 로컬 컴의 성능 문제긴 한데, 고성능 서버가 있는 상황에서 그런 방식으로 쓰기가 좀 그렇더군요.
저희도 주로 윈도개발자이고 vi 에 익숙치들 않아서 build+svn 서버를 돌리고 있는 상황인데, 그나마 서버 접근 인원이 얼마 안되어 그렇게 돌리고 있죠.
인원이 많아진다면 이런저런 문제에 svn 등등도 여러보고 다시 생각해 봐야 될 거같습니다
정말 아무생각없이 모르고 있던 부분을 알았습니다.
답변 감사합니다.
.
중복되어 정의가 되어있어서 에러가 나는것인데
빌드할때 사용되는 .mk 파일 확인해보셔야 할 것 같습니다.