ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2015年8月27日 星期四

nvidia optimus : bumblebee in debian jessie

lenovo e431
原來 bios 中 display card 有得選:
內建和 switchable,
要選 switchable

然後 follow http://www.unixmen.com/how-to-make-nvidia-optimus-technology-work-properly-on-debian/

但是 run oprirun glsgear 的 framerate 跟 primerun 的結果一樣,都是 60fps
結果因為是 LCD panel, framerate 是固定的,..

所以看起來是有安裝成功


看來 bumbleblee 和 nvidia driver 是兩件事。
安裝了 nvidia-driver, run nvidis-settings 之後,產生了 /etc/X11/xorg.conf
結果 reboot 後, startx failed, 看 log, 說是 module: nvidia 找不到。

最後,刪除 /etc/X11/xorg.conf 後, startx OK

2015年8月26日 星期三

ref: https://github.com/CyanogenMod/android/commit/d33c1afc194cfc402f4e5edc37dbef1bafea35df

roomservice 好像是把 device 下一堆 vendor 管理的咚咚。
所以這個 commit 把一堆 vendor product 都拿掉了...

2015年8月21日 星期五

aosp project 下的 Makfile 怎麼來的..

因為 project root 不是一個 git project 啊。

是在 .repo/manifest.xml. 中:
  <project path="build" name="platform/build" groups="pdk,tradefed" >
    <copyfile src="core/root.mk" dest="Makefile" />
  </project>
所以是歸 build 這個 project 管的。
他就是 build/core/root.mk

src 是相對於 project 的path
dest 是箱對於 aosp 的 path

還有,只有在第一次 sync 得時候會 copy...

2015年8月18日 星期二

repo and manifest.xml -- revision

manifest.xml 每一個 project 都可以有自己的 revision, 寫在 revision attrib 中。
如果沒寫,就用 xml 一開頭寫的 default tag 的 revision

這個 revision, 對應到 git 的 refs/heads/*
像:
revision="kitkat-dev"
就是對應到 refs/heads/kitkat-dev

如果要 checkout tags
就要寫full path:
revision="refs/tags/android-5.0.2_r1"

repo and manifest.xml-- notdefault

manifest.xml 的 project attrib 有一個:groups
可以用來把一堆 project 區分為一些 group: pdk, intel, omap4, darwin, linux..
一個 project 可以同時屬於多個 groups

如果沒有 groups att, 就屬於 default

如果 groups 中有 'notdefault', 那麼如果沒有特別指定,在 sync 的時候,這個 project 就不會被 checkout

如果要 checkout notdefault 這個 group 的 project,
ref: http://www.cnblogs.com/mimamo/p/3948491.html
repo init -u https://android.googlesource.com/platform/manifest -g all
其中的 '-g all' 就代表 all groupe,包含 notdefault

另一個python script: check not git(ize) folders

上一篇: http://r40eubuntu.blogspot.tw/2011/03/python-check-git-no-git-folder.html

在更新過 python 版本後,好像沒辦法在 for loop 中更改 loop list 內容。
所以要改一下,



所以檢查 android source 與 repo, git 是否完整的 python script 就是:


他會先找出是否有哪個folder 還沒有 git 管轄
然後從 manifest.xml 找出所有的 project path。
檢查是不是所有 git folder 都有在 manifest.xml 中
檢查是不是所有 manifest.xml 的 project 都實際存在。

放在: https://github.com/checko/python_repo

python : 找出沒有在 git control 下的 folder

因為 vendor 給的 android source 沒有包含 git, repo 資訊,
所以只好採用 .. repo sync 一個相近的 source, 覆蓋後 commit

所以覆蓋後,要檢查是不是有沒被 versio control 的 folder:
用 python 寫:
import os

i=0
for root, dirlist, filelist in os.walk("./"):
        toremove=[]

        for ss in ['.repo','out']:
                if ss in dirlist:
                        toremove.append(ss)

        for ss in dirlist:
                gpath = os.path.join(root,ss,'.git')
                if os.path.isdir(gpath):
                        toremove.append(ss)

        for ss in toremove:
                dirlist.remove(ss)

        if (len(dirlist)==0) and (len(toremove)==0):
                print i, root
                i=i+1
因為 os.walk 會依照top down 的方式,到 dirlist 中搜尋。
所以就用修改 dirlist 的方式來作:
  • 先排除 .repo, out 目錄
  • 排除含有 .git 的次目錄
最後就可以印出來。

但是這個結果會把所有沒有 git control 的 folder, subfolder 都印出來,(因為他沒辦法判斷要從哪裡算起,是一個 project)
這部份要自己作。


這個動態刪除 dirlist 的作法在更換 python 版本的時候出了問題。
原來是在判斷包含 .git 後直接作 dirlist.remove(ss)
但是卻發現這樣會影像到下一個 ss (in dirlist) 的判斷。
所以只好先放在 toremove[] 中,最後再一次修改全部

放在: https://github.com/checko/python_repo

github 終於可以動了

github 可以動了。
根據每一個機器.account,要 copy account 的 dsa /rsa pub key 到 github 中。
然後就可以把 github 當 git server 用了。
create new project/repository 可以用 github 的介面完成。

這一篇 http://help.github.com/troubleshooting-ssh/ 有 ssh 的 trouble shooting.

github 可以為每一個 repo 建立一個 homepage,follow instruction。
http://pages.github.com/#project_page_generator
要注意的是,這個 default 的 homepage 產生需要時間,所以按下 button 後馬上去看會是 404 page。
要等大約 3 min (說明是說 10 min)才會出現。


ref:



用 https ,不用 ssh

如果有一些公司的mis 不願意開 ssh port,github 也有提供另一種 access 的方法:

需要 1.6.6 以上的 git (git --version 會顯示,ubuntu 10.10 的版本是 1.7)。
command:
$ git clone https://username@github.com/username/project.git username : 你在 github 使用的 username。
project : 你的 repository 名稱。

這個新版的 git 會 prompt 要你輸入 password。你就要輸入 你在 github 的 password。


ref: https://github.com/blog/642-smart-http-support



另外,在 proxy 後面,clone OK, push fail:
$ git push
error: The requested URL returned error: 403 while accessing https://github.com/checko/mdnsreponder_gingerbread.git/info/refs

fatal: HTTP request failed
可以參考這篇:http://blog.csdn.net/happyteafriends/article/details/11554043

修改該 repo 的 .git/config, 加上紅色部份...

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://checko@github.com/checko/mdnsreponder_gingerbread.git

ref: https://github.com/markkolich/blog/blob/master/content/entries/pushing-to-an-http-git-remote-ref-on-ubuntu-1004-lts-with-git-1704-403-inforefs.md

git config 修改 remote:
git config 命令可以修改 config 檔。
cat config 出來看一下:
[core]
 repositoryformatversion = 0
 filemode = true
 bare = false
 logallrefupdates = true
[remote "origin"]
 fetch = +refs/heads/*:refs/remotes/origin/*
 url = https://checko@github.com/checko/python_repo.git
[branch "master"]
 remote = origin
 merge = refs/heads/master
修改 remote origin 的 url 就用:
$ git config remote.origin.url https://checko@github.com/checko/python_repo.git
就可以了。

2015年8月17日 星期一

加上 --mirror
export GIT_DIR=~/openssl.git
git init

git config --file ~/openssl.git/config --replace-all remote.aosp.url      git://robot/android5.0.2r1/platform/external/openssl
git config --file ~/openssl.git/config --replace-all remote.aosp.projname platform/external/openssl
git config --file ~/openssl.git/config --replace-all remote.aosp.fetch +refs/heads/*:refs/heads/*
git fetch --update-head-ok aosp --tags +refs/heads/*:refs/heads/*
git pack-refs --all --prune
git symbolic-ref -m 'manifest set tp refs/tags/android-5.0.2_r1' HEAD refs/tags/android-5.0.2_r1
git -c pack.thread=1 gc --auto

沒加 --mirror 的話。
GIT_DIR 會在 .repo/project-objects/platform/external/openssl.git
然後動做一樣。

最後的 checkout,在 --trace 中看不到一些動作。
所以要配盒source code 來看。

project.py:
def _InitWorkTree(self):
  dotgit = os.path.join(self.worktree,'.git')
  if not os.path.exist(gotgit):
    os.makedirs(dotgit)
    self._ReferenceGitDir(self.gitdir, dotgit, share_ref=True, copy_all=False)
    _lwrite(os.path.join(dotgit, HEAD). '%s\n" % self.GetRevisionId())
    
    cmd = ['read-tree', '--reset', '-u']
    cmd.append('-v')
    cmd.append(HEAD)
    if GitCommand(self,cmd),Wait() != 0
      raise GitError("cannot initialize work Tree")

    self._CopyAndLinkFiles()
裡面的東西,幾忽就是 git 在做的事...
copy .git 的內容。

2015年8月14日 星期五

https://www.chromium.org/chromium-os/quick-start-guide

build 玩以後,燒到usb,
切到 developement mode (console).
sudo enable_usb_boot

插入usb
按 Ctrl-U

就會在 usb 開機了。

2015年8月12日 星期三

Android Studio v1.3 -- gradle.properties

升級玩出現:
Starting with version 1.3, Android Studio no longer Support IDE-specific Gradle JVM arguments.
Android Studio will remove any stored Grandle JVM arguments.
我的是..
Would you like to copy these JVM arguments:
-Dhttp.proxyHost=192.168.147.123 -Dhttp.proxyPort=3128
to the project's gradle.properties file?
選 Yes.
結果sync 一樣fail, 說 gradle 找不到 route

打開 gradle.properties 來看,多了:
org.gradle.jvmargs=-Dhttp.proxyHost\=192.168.147.123 -Dhttp.proxyPort\=3128
ref: https://docs.gradle.org/current/userguide/build_environment.html#N11961

改成:
systemProp.http.proxyHost=192.168.147.123
systemProp.http.proxyPort=3128
systemProp.https.proxyHost=192.168.147.123
systemProp.https.proxyPort=3128
就 OK了。

2015年8月3日 星期一

Old version Chrome.

因為某次更新後,chrome 內輸入中文都會出現最後一個字輸出兩次的情況,所以想安裝舊版本。

link 在: http://www.filehippo.com/download_google_chrome/history

現在 46.0.2467.2-1 沒問題。

標籤

網誌存檔