fuchsia代码管理

2023-12-19 10:32
文章标签 代码 管理 fuchsia

本文主要是介绍fuchsia代码管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

google官方讲述代码获取的说明文档路径如下:https://fuchsia.googlesource.com/docs/+/ea2fce2874556205204d3ef70c60e25074dc7ffd/development/source_code/README.md。使用如下以curl开始的命令组合,最后部分的layer可以指定为topaz、peridot和garnet,或者指定仅下载操作系统代码zircon。

$ curl -s "https://fuchsia.googlesource.com/fuchsia/+/master/scripts/bootstrap?format=TEXT" | base64 --decode | bash -s <layer>

为方便起见,此处不指定layer参数,下载全部的fuchsia代码。所需时间与网速有很大关系,没有做计算,我是晚上开始下载,第二天早起看已经下载完成。

$ curl -s "https://fuchsia.googlesource.com/fuchsia/+/master/scripts/bootstrap?format=TEXT" | base64 --decode | bash
~/fuchsia/.jiri_root/bin ~
cipd bootstrapped to path:"/home/kai/fuchsia/.jiri_root/bin/cipd"
~
Please add /home/kai/fuchsia/.jiri_root/bin to your PATHUpdating all projects
Done creating a Platform Source Tree at "/home/kai/fuchsia".
Recommended: export PATH="/home/kai/fuchsia/.jiri_root/bin:$PATH"

首先curl命令下载网址https://fuchsia.googlesource.com/fuchsia/+/master/scripts/bootstrap?format=TEXT中的文件,也可以在浏览器中输入此网址,通过浏览器进行下载,文件名为bootstrap.txt,其内容为base64编码。以下通过curl命令下载,内容打印在终端上(内容有省略):

$ curl  "https://fuchsia.googlesource.com/fuchsia/+/master/scripts/bootstrap?format=TEXT"  
IyEvYmluL2Jhc2gKIyBDb3B5cmlnaHQgMjAxNyBUaGUgRnVjaHNpYSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgojIFVzZSBvZiB0........
$ 

 

使用工具base64解码bootstrap.txt文件,解码之后为bash脚本文件,内容如下(省略了一些非关键内容)。由脚本中的注释可知,其将下载一个新的名称为bootstrap_jiri.txt的脚本,由新脚本完成fuchsia目录的创建,以及下载jiri工具到目录"fuchsia/.jiri_root/bin"中。jiri工具可同时管理多个git代码仓库,包括同步、代码恢复等功能,Fuchsia正是使用jiri管理其代码仓库。

关于bootstrap_jiri.txt脚本稍后介绍。

$ cat bootstrap.txt | base64 --decode
#!/bin/bash# The fetched script will
# - create "fuchsia" directory if it does not exist,
# - download "jiri" command to "fuchsia/.jiri_root/bin"
curl -s "https://fuchsia.googlesource.com/jiri/+/master/scripts/bootstrap_jiri?format=TEXT" | base64 --decode | bash -s fuchsia
cd fuchsia.jiri_root/bin/jiri import -name=integration flower https://fuchsia.googlesource.com/integration
.jiri_root/bin/jiri override fuchsia https://fuchsia.googlesource.com/fuchsia
.jiri_root/bin/jiri updateecho "Done creating a Platform Source Tree at \"$(pwd)\"."
echo "Recommended: export PATH=\"$(pwd)/.jiri_root/bin:\$PATH\""

 

之后,使用jiri命令在fuchsia目录下创建其manifest文件 .jiri_manifest。其内容如下。jiri update命令执行时,将同步manifest文件中指定的工程(代码仓库)。此处显式指定了一个工程project,名称为fuchsia,代码仓库地址为:"https://fuchsia.googlesource.com/fuchsia",并且其使用了overrides标签,意味着其将替换已有同名的工程,仅在根manifest文件中允许此标签。

~/fuchsia$ cat .jiri_manifest 
<manifest><imports><import manifest="flower" name="integration" remote="https://fuchsia.googlesource.com/integration"/></imports><overrides><project name="fuchsia" remote="https://fuchsia.googlesource.com/fuchsia"/></overrides>
</manifest>
~/fuchsia$ 

 

另外,在文件中引入了另外一个manifest文件,其仓库地址为"https://fuchsia.googlesource.com/integration",下载之后,内容如下:

~/fuchsia$ cat integration/flower 
<?xml version="1.0" encoding="UTF-8"?>
<manifest><imports><localimport file="minimal"/><localimport file="stem"/><localimport file="third_party/flower"/><localimport file="topaz/minimal"/><localimport file="topaz/third_party"/></imports><projects><project name="experiences"path="src/experiences"remote="https://fuchsia.googlesource.com/experiences"gerrithost="https://fuchsia-review.googlesource.com"revision="ceff64f9c1475b5d1ca028a05f638278913ae63a"/></projects>
</manifest>
~/fuchsia$ 

 

在此仓库中,有已下载的manifest文件:minimal、stem、third_party/flower、topaz/minimal和topaz/third_party。如下所以。由于manifest文件的嵌套,最终,会包含非常多的project(代码仓库)进来。
 

~/fuchsia$ ls integration/
flower  garnet  infra  jiri.lock  minimal  peridot  prebuilts  README.md  stem  third_party  topaz  zircon
~/fuchsia$ 

 

可使用如下的jiri project命令查看包含的工程情况。如下fuchsia总共包含有182个代码仓库。

~/fuchsia$ .jiri_root/bin/jiri project
* project canonical-json-goPath:     /home/kai/fuchsia/third_party/golibs/github.com/tent/canonical-json-goRemote:   https://fuchsia.googlesource.com/third_party/canonical-json-goRevision: 96e4ba3a7613a1216cbd1badca4efe382adea337Branches: none
* project cobaltPath:     /home/kai/fuchsia/third_party/cobaltRemote:   https://fuchsia.googlesource.com/cobaltRevision: 83d0db4528c0a36b14d54f34d7dbbd516c1184b0Branches: none...
~/fuchsia$
~/fuchsia$ .jiri_root/bin/jiri project | grep project | wc -l
182
~/fuchsia$ 

 


最后,运行jiri update命令,同步所有指定的代码仓库。


来看一下bootstrap_jiri.txt脚本的功能。如下curl命令获取其内容,使用base64工具解码。有文件注释可知,此脚本将创建fuchsia目录,以及其下子目录.jiri_root和.jiri_root/bin/jiri命令二进制执行文件。jiri自身的代码仓库位于地址:https://fuchsia.googlesource.com/jiri。

$ curl -s https://fuchsia.googlesource.com/jiri/+/master/scripts/bootstrap_jiri?format=TEXT | base64 --decode
$ 
#!/usr/bin/env bash# bootstrap_jiri initializes a root directory for jiri.  The following
# directories and files will be created:
#   <root_dir>                         - root directory (picked by user)
#   <root_dir>/.jiri_root              - root metadata directory
#   <root_dir>/.jiri_root/bin/jiri     - jiri binary
#
# The jiri sources are downloaded and built into a temp directory, which is
# always deleted when this script finishes.  The <root_dir> is deleted on any
# failure.set -euf -o pipefail# Jiri repo, from which we will download the jiri script wrapper.
readonly JIRI_REPO_URL="https://fuchsia.googlesource.com/jiri"# Google Storage bucket that contains prebuilt versions of jiri.
readonly GS_BUCKET_URL="https://fuchsia-build.storage.googleapis.com/jiri"

以下脚本内容,使用uname命令获取本机的ARCH处理器架构,由于使用的为intel处理器,uname -m命令的输出为x86_64,ARCH赋值为amd64。并且使用mkdir命令创建bin目录,由于指定了-p选项,连带的将根目录fuchsia和其子目录.jiri_root创建了出来。

readonly HOST_ARCH=$(uname -m)
if [ "$HOST_ARCH" == "aarch64" ]; thenreadonly ARCH="arm64"
elif [ "$HOST_ARCH" == "x86_64" ]; thenreadonly ARCH="amd64"
elseecho "Arch not supported: $HOST_ARCH"exit 1
fi# toabs converts the possibly relative argument into an absolute path.  Run in a
# subshell to avoid changing the caller's working directory.
toabs() (cd $(dirname $1)echo ${PWD}/$(basename $1)
)readonly ROOT_DIR="$(toabs $1)"
readonly BIN_DIR="${ROOT_DIR}/.jiri_root/bin"mkdir -p "${BIN_DIR}"

 

其中,由于使用的是Ubuntu系统,HOST_OS的值为linux,所以TARGET变量为linux-amd64。首先使用curl命令获取jiri代码仓库的最新提交commit ID版本号,但是随后并没有使用此版本号。之后使用curl获取jiri代码仓库的提交日志信息,此次将获取到一个版本号数组(每次提交commit将产生一个commit id版本)。最后,循环遍历VERSIONS数组中的每个版本号,与TARGET和GS_BUCKET_URL变量值(即预编译的jiri工具的保存路径)组合为一个URL,使用curl检查此url是否存在。存在的话,将jiri二进制文件下载到目录"${BIN_DIR}/jiri"中。

# Determine and validate the version of jiri.
readonly HOST_OS=$(uname | tr '[:upper:]' '[:lower:]')
readonly TARGET="${HOST_OS}-${ARCH}"
readonly COMMIT_URL="${JIRI_REPO_URL}/+refs/heads/master?format=JSON"
readonly LOG_URL="${JIRI_REPO_URL}/+log/refs/heads/master?format=JSON"
readonly VERSION=$(curl -sSf "${COMMIT_URL}" | sed -n 's/.*"value": "\([0-9a-f]\{40\}\)"/\1/p')
readonly VERSIONS=$(curl -sSf "${LOG_URL}" | sed -n 's/.*"commit": "\([0-9a-f]\{40\}\)".*/\1/p')JIRI_URL=""
for version in ${VERSIONS}; dourl="${GS_BUCKET_URL}/${TARGET}/${version}"if curl --output /dev/null --silent --head --fail "${url}"; then
100  5004    0  5004    0     0    574      0 --:--:--  0:00:08 --:--:--  1195
}"breakfi
doneif ! curl -sf -o "${BIN_DIR}/jiri" "${JIRI_URL}"; thenecho "Failed downloading prebuilt Jiri binary." 1>&2exit 1
fi
chmod 755 "${BIN_DIR}/jiri"

 

例如JIRI_URL=https://fuchsia-build.storage.googleapis.com/jiri/linux-amd64/e0c5efcc7081e09845f3f17944fceb6ff179b981。最后,使用命令jiri bootstrap cipd下载cipd二进制程序。

# Install cipd, which is frequently needed to use manifests.
pushd "${BIN_DIR}"
if ! "${BIN_DIR}/jiri" bootstrap cipd; thenecho "Running jiri bootstrap failed." 1>&2popdexit 1
fi
popdecho "Please add ${BIN_DIR} to your PATH"trap - EXIT
$ 

 

END

 

这篇关于fuchsia代码管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/511853

相关文章

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

安全管理体系化的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。摄像头管理模块用于多种终端设备、智能设备的接入及管理。平台支持包括摄像头等终端感知设备接入,为整个平台提

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1