Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/unicode-org/icu-docker
Dockerfiles for ICU development
https://github.com/unicode-org/icu-docker
Last synced: 4 days ago
JSON representation
Dockerfiles for ICU development
- Host: GitHub
- URL: https://github.com/unicode-org/icu-docker
- Owner: unicode-org
- License: other
- Created: 2018-01-29T21:00:31.000Z (almost 7 years ago)
- Default Branch: main
- Last Pushed: 2024-03-18T18:05:58.000Z (8 months ago)
- Last Synced: 2024-05-08T23:18:21.907Z (6 months ago)
- Language: Shell
- Size: 67.4 KB
- Stars: 6
- Watchers: 23
- Forks: 11
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ICU development with Docker
This repository creates ICU4C releases using Docker for multiple Linux versions. The binary files results may be added to [ICU releases](https://github.com/unicode-org/icu/releases) for public distribution, especially for the release candidates ("72 RC") and fully released versions (e.g., "72.1").
To use this repository you will need:
* Access to the [ICU repository in Github](https://www.github.com/unicode-org/icu)
* Know the branch / tag of interest within that repository
* Docker installed and configuredThis repository contains:
* A set of docker files for the various Linux versions
* Makefile for driving the compiling, checking, and building of these versions
* Some utility scripts to finalize release files for uploading to public directories.ICU-docker runs a *docker-compose* command for each of the Linux targets. The outputs are created in a subdirectory `./dist`.
Each *docker-compose* execution sets up `ccache` to share cached compiler output in `./tmp/.ccache` and expects an ICU source directory under `./src/icu`
## Build the distributions
The following steps create binary files for each docker file in `./dockerfiles` and also Fedora and Ubuntu binary files.
- Install [Docker](http://docker.io)
- Copy the code for a given branch of [ICU source in github](https://github.com/unicode-org/icu).```
# Set this to use the git ref (branch / Github release tag) you need.
export RELEASE_BRANCH=maint/maint-74 # !! Example !!sh setup_icu4c_src.sh
# Optional: Link `src/` to `/src` on your system to to give access to
# error messages generated inside each docker container.
# For example: `Error in /src/icu/somefile.cpp`.
sudo ln -sv `pwd`/{src,dist} /
# This checks compile and tests for all platforms in dockerfiles/
make check-all # This is a long, slow step
```
- Build binaries, data, and source as .zip and .tgz files in the ./dist
directory:```
make dist # Wait while this builds distribution output...
```- Sort and rename files into `dist/icu4c-*/*`.
Each binary needs to include the version label, e.g., "69rc" for the release candidate of ICU version 69. The general availability for that would be "69.1".
**Important:** The script `sort-out-dist.sh` may be helpful, but
manual adjustments may be needed.**Hint:** Review names of files in a previous release such as [Release ICU 72.1](https://github.com/unicode-org/icu/releases/tag/release-72-1) to check if renaming was successful. If not, change file names as needed.
```
./sort-out-dist.sh# Review and fix the results here:
ls -l dist/icu4c-*
```
## Verify that the distributions workPerform some command line builds to verify the release. Use `docker-compose run` with each of the releases to check the build. Do this for each of the target Linux versions in `./dockerfiles`.
```
docker-compose run ubuntu bash
# This creates a temporary docker shell with a name such as 'build@59b67f6c5058:~'
/src/icu/icu4c/source/configure
# This will show the ICU version number of the release just created.
make check # To run all ICU4C tests# ...
exit # To leave the docker shell
```## Customization
If desired, you can create a `Makefile.local` that can point to a different
docker-compose.yaml:```
# Makefile.local
DOCKER_COMPOSE=docker-compose -f local-docker-compose.yml
```## Author
Steven R. Loomis
### Copyright & Licenses
Copyright © 2016-2024 Unicode, Inc. Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the United States and other countries.
A CLA is required to contribute to this project - please refer to the [CONTRIBUTING.md](https://github.com/unicode-org/.github/blob/main/.github/CONTRIBUTING.md) file (or start a Pull Request) for more information.
The contents of this repository are governed by the Unicode [Terms of Use](https://www.unicode.org/copyright.html) and are released under [LICENSE](./LICENSE).