From fbfbde2667a68ac25f924dd776e5bc3d0f45bcc2 Mon Sep 17 00:00:00 2001 From: yafen Date: Fri, 21 Aug 2020 17:46:14 +0800 Subject: [PATCH 1/2] update repo to mainline --- README.en.md | 31 +++++++++++++++++++++++++++++-- README.md | 30 +++++++++++++++++++++++++++++- raspberrypi-build.spec | 9 ++++++--- raspi-image-build.tar.gz | Bin 6164 -> 6859 bytes 4 files changed, 64 insertions(+), 6 deletions(-) diff --git a/README.en.md b/README.en.md index f8d490e..0ff2821 100644 --- a/README.en.md +++ b/README.en.md @@ -16,10 +16,37 @@ AArch64 After installing raspberrypi-build, you can find the scripts and related files for building openEuler image of Raspberry Pi in `/opt/raspi-image-build`. -To build an image, run `sudo bash create-image.sh OUTDIR`, where `OUTDIR` is the directory for storing the image and other temporary files. If `OUTDIR` does not exist, it will be created automatically. +Run the following command to build an image: -After building the image, you can find the image in `OUTDIR/raspi_output/img/` as shown in the script output. +`sudo bash create-image.sh -d DIR -r REPO -n IMAGE_NAME` +The meaning of each parameter: + +1. -d, --dir DIR + + Required! The directory for storing the image and other temporary files. If The DIR does not exist, it will be created automatically. + + After building the image, you can find the image in `DIR/raspi_output/img/` as shown in the script output. + +2. -r, --repo REPO_INFO + + The url/path of target repo file, or the list of repositories' baseurls. Note that, the baseurls should be separated by space and enclosed in double quotes. + + By default, the parameter is the path of the repo file which should be in the `openEuler` directory. Examples are as follows: + + - The url of target repo file: `https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo` + - The path of target repo file: `/opt/raspi-image-build/openEuler/openEuler-20.03-LTS.repo` + - List of repo's baseurls: `"http://repo.openeuler.org/openEuler-20.03-LTS/OS/aarch64/ http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/aarch64/ http://repo.openeuler.org/openEuler-20.03-LTS/source"` + +3. -n, --name IMAGE_NAME + + The image name to be built. + + For example, `openEuler-20.03-LTS.img`. The default is `openEuler-20.03-LTS-aarch64-raspi.img`, or it is automatically generated based on parameter: `-r, --repo REPO_INFO`. + +4. -h, --help + + Display help information. #### Contribution diff --git a/README.md b/README.md index 3f740f2..259ba59 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,36 @@ AArch64 安装 raspberrypi-build 后,树莓派镜像构建的脚本及相关文件会保存在 `/opt/raspi-image-build`。 -构建镜像需执行 `sudo bash create-image.sh OUTDIR`,其中 `OUTDIR` 为构建镜像的输出目录,如不存在则会自动创建。脚本运行结束后,会提示镜像的存储位置,默认保存在 `OUTDIR/raspi_output/img/` 下。 +构建镜像需执行命令: +`sudo bash create-image.sh -d DIR -r REPO -n IMAGE_NAME` + +各个参数意义: + +1. -d, --dir DIR + + 必要参数!构建镜像和临时文件的输出目录,如果 `DIR` 不存在则会自动创建。 + + 脚本运行结束后,会提示镜像的存储位置,默认保存在 `DIR/raspi_output/img/` 下。 + +2. -r, --repo REPO_INFO + + 开发源 repo 文件的 URL 或者路径,也可以是开发源中资源库的 baseurl 列表。注意,如果该参数为资源库的 baseurl 列表,该参数需要使用双引号,各个 baseurl 之间以空格隔开。 + + 默认使用脚本所在目录的 openEuler 文件夹下的 repo 文件。下面分别举例: + - 开发源 repo 文件的 URL:`https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo` + - 开发源的 repo 文件路径:`/opt/raspi-image-build/openEuler/openEuler-20.03-LTS.repo` + - 资源库的 baseurl 列表:`"http://repo.openeuler.org/openEuler-20.03-LTS/OS/aarch64/ http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/aarch64/ http://repo.openeuler.org/openEuler-20.03-LTS/source"` + +3. -n, --name IMAGE_NAME + + 构建的镜像名称。 + + 例如,`openEuler-20.03-LTS.img`。默认为`openEuler-20.03-LTS-aarch64-raspi.img`,或者根据 `-r, --repo REPO_INFO` 参数自动生成。 + +4. -h, --help + + 显示帮助信息。 #### 参与贡献 diff --git a/raspberrypi-build.spec b/raspberrypi-build.spec index e271cba..84dbc50 100644 --- a/raspberrypi-build.spec +++ b/raspberrypi-build.spec @@ -1,8 +1,8 @@ %global debug_package %{nil} Name: raspberrypi-build -Version: 1.0 -Release: 3 +Version: 2.0 +Release: 1 Summary: Scripts of building images for RaspberryPi License: Mulan v2 ExclusiveArch: aarch64 @@ -22,7 +22,7 @@ Scripts of building images for Raspberry Pi %install mkdir -p %{buildroot}/opt/raspi-image-build install -p -m 700 raspi-image-build/*.sh %{buildroot}/opt/raspi-image-build/ -cp -a raspi-image-build/openeuler %{buildroot}/opt/raspi-image-build/ +cp -a raspi-image-build/openEuler %{buildroot}/opt/raspi-image-build/ cp -a raspi-image-build/config %{buildroot}/opt/raspi-image-build/ @@ -33,6 +33,9 @@ cp -a raspi-image-build/config %{buildroot}/opt/raspi-image-build/ %changelog +* Fri Aug 21 2020 Yafen Fang - 2.0-1 +- Update repo to openEuler 20.09, add parameters to the script(create-image.sh). + * Mon Aug 3 2020 Yafen Fang - 1.0-3 - Install raspberrypi-bluetooth from config. diff --git a/raspi-image-build.tar.gz b/raspi-image-build.tar.gz index 9b53c8c96708c3ab8f4512c0301399bb2abdf045..52703d62670c7d5ec8a1a01a90d72f5133067f66 100644 GIT binary patch literal 6859 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 -- Gitee From b3c559f728ace51464165285ca7c5a2e4c13e919 Mon Sep 17 00:00:00 2001 From: yafen Date: Wed, 26 Aug 2020 10:39:15 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AE=BE=E7=BD=AE=20=5Fi?= =?UTF-8?q?nstall=5Flangs=20=E6=9D=A5=E5=AE=9E=E7=8E=B0=E5=87=8F=E5=B0=91?= =?UTF-8?q?=E9=95=9C=E5=83=8F=E4=B8=AD=E7=9A=84=E8=AF=AD=E8=A8=80=E5=8C=85?= =?UTF-8?q?=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.en.md | 8 ++++---- README.md | 2 +- raspberrypi-build.spec | 5 ++++- raspi-image-build.tar.gz | Bin 6859 -> 6939 bytes 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/README.en.md b/README.en.md index 0ff2821..561cc2f 100644 --- a/README.en.md +++ b/README.en.md @@ -24,17 +24,17 @@ The meaning of each parameter: 1. -d, --dir DIR - Required! The directory for storing the image and other temporary files. If The DIR does not exist, it will be created automatically. + Required! The directory for storing the image and other temporary files. If the `DIR` does not exist, it will be created automatically. After building the image, you can find the image in `DIR/raspi_output/img/` as shown in the script output. 2. -r, --repo REPO_INFO - The url/path of target repo file, or the list of repositories' baseurls. Note that, the baseurls should be separated by space and enclosed in double quotes. + The URL/path of target repo file, or the list of repositories' baseurls. Note that, the baseurls should be separated by space and enclosed in double quotes. By default, the parameter is the path of the repo file which should be in the `openEuler` directory. Examples are as follows: - - The url of target repo file: `https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo` + - The URL of target repo file: `https://gitee.com/src-openeuler/openEuler-repos/blob/openEuler-20.03-LTS/generic.repo` - The path of target repo file: `/opt/raspi-image-build/openEuler/openEuler-20.03-LTS.repo` - List of repo's baseurls: `"http://repo.openeuler.org/openEuler-20.03-LTS/OS/aarch64/ http://repo.openeuler.org/openEuler-20.03-LTS/EPOL/aarch64/ http://repo.openeuler.org/openEuler-20.03-LTS/source"` @@ -42,7 +42,7 @@ The meaning of each parameter: The image name to be built. - For example, `openEuler-20.03-LTS.img`. The default is `openEuler-20.03-LTS-aarch64-raspi.img`, or it is automatically generated based on parameter: `-r, --repo REPO_INFO`. + For example, `openEuler-20.03-LTS.img`. The default is `openEuler-20.09-aarch64-raspi.img`, or it is automatically generated based on parameter: `-r, --repo REPO_INFO`. 4. -h, --help diff --git a/README.md b/README.md index 259ba59..a2e7be8 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ AArch64 构建的镜像名称。 - 例如,`openEuler-20.03-LTS.img`。默认为`openEuler-20.03-LTS-aarch64-raspi.img`,或者根据 `-r, --repo REPO_INFO` 参数自动生成。 + 例如,`openEuler-20.03-LTS.img`。默认为`openEuler-20.09-aarch64-raspi.img`,或者根据 `-r, --repo REPO_INFO` 参数自动生成。 4. -h, --help diff --git a/raspberrypi-build.spec b/raspberrypi-build.spec index 84dbc50..9273431 100644 --- a/raspberrypi-build.spec +++ b/raspberrypi-build.spec @@ -2,7 +2,7 @@ Name: raspberrypi-build Version: 2.0 -Release: 1 +Release: 2 Summary: Scripts of building images for RaspberryPi License: Mulan v2 ExclusiveArch: aarch64 @@ -33,6 +33,9 @@ cp -a raspi-image-build/config %{buildroot}/opt/raspi-image-build/ %changelog +* Wed Aug 26 2020 Yafen Fang - 2.0-2 +- Set _install_langs to reduce the size of the language package in the image. + * Fri Aug 21 2020 Yafen Fang - 2.0-1 - Update repo to openEuler 20.09, add parameters to the script(create-image.sh). diff --git a/raspi-image-build.tar.gz b/raspi-image-build.tar.gz index 52703d62670c7d5ec8a1a01a90d72f5133067f66..ef8571c214cfa10860603acc6e8f6c3c34ea6047 100644 GIT binary patch literal 6939 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