Browse Source

Documented and fixed docker release process

Jguer 6 years ago
parent
commit
5db33b6bcb
4 changed files with 122 additions and 94 deletions
  1. 61 0
      CONTRIBUTING.md
  2. 3 1
      Makefile
  3. 57 92
      README.md
  4. 1 1
      build/aarch64.Dockerfile

+ 61 - 0
CONTRIBUTING.md

@@ -0,0 +1,61 @@
+## Contributing to yay
+
+Contributors are always welcome!
+
+If you plan to make any large changes or changes that may not be 100% agreed
+on, we suggest opening an issue detailing your ideas first.
+
+Otherwise send us a pull request and we will be happy to review it.
+
+### Dependencies
+
+Yay depends on:
+
+- go (make only)
+- git
+- base-devel
+
+Note: Yay also depends on a few other projects (as vendored dependencies). These
+projects are stored in `vendor/`, are built into yay at build time, and do not
+need to be installed separately. These files are managed as go modules and should not be modified manually.
+
+Following are the dependencies managed as go modules:
+
+- https://github.com/Jguer/go-alpm
+- https://github.com/Morganamilo/go-srcinfo
+- https://github.com/Morganamilo/go-pacmanconf
+- https://github.com/mikkeloscar/aur
+
+### Building
+
+Run `make` to build Yay. This command will generate a binary called `yay` in
+the same directory as the Makefile.
+
+Note: Yay's Makefile sources its dependencies from `vendor/`. When
+building manually, dependencies will instead be sourced from `GOPATH`. To
+build against `vendor/` you must specify `-mod=vendor` in the build command.
+
+#### Docker Release
+
+`make docker-release` will build the release packages for `aarch64` and for `x86_64`.
+
+For `aarch64` to run on a `x86_64` platform `qemu-user-static(-bin)` must be
+installed.
+
+```
+docker run --rm --privileged multiarch/qemu-user-static:register --reset
+```
+
+will register QEMU in the build agent. ARM builds tend to crash sometimes but
+repeated runs tend to succeed.
+
+### Code Style
+
+All code should be formatted through `go fmt`. This tool will automatically
+format code for you. We recommend, however, that you write code in the proper
+style and use `go fmt` only to catch mistakes.
+
+### Testing
+
+Run `make test` to test Yay. This command will verify that the code is
+formatted correctly, run the code through `go vet`, and run unit tests.

+ 3 - 1
Makefile

@@ -60,7 +60,7 @@ release: | test build
 
 docker-release-aarch64:
 	docker build -f build/aarch64.Dockerfile -t yay-aarch64:${VERSION} .
-	docker create --name yay-aarch64 yay-aarch64:${VERSION}
+	docker run --name yay-aarch64 yay-aarch64:${VERSION}
 	docker cp yay-aarch64:${PKGNAME}_${VERSION}_aarch64.tar.gz ${PKGNAME}_${VERSION}_aarch64.tar.gz
 	docker container rm yay-aarch64
 
@@ -70,6 +70,8 @@ docker-release-x86_64:
 	docker cp yay-x86_64:${PKGNAME}_${VERSION}_x86_64.tar.gz ${PKGNAME}_${VERSION}_x86_64.tar.gz
 	docker container rm yay-x86_64
 
+docker-release: | docker-release-x86_64 docker-release-aarch64
+
 package: release
 	tar -czvf ${PACKAGE}.tar.gz ${PACKAGE}
 clean:

+ 57 - 92
README.md

@@ -4,7 +4,7 @@ Yet Another Yogurt - An AUR Helper Written in Go
 
 #### Packages
 
-[![yay](https://img.shields.io/aur/version/yay.svg?label=yay)](https://aur.archlinux.org/packages/yay/) [![yay-bin](https://img.shields.io/aur/version/yay-bin.svg?label=yay-bin)](https://aur.archlinux.org/packages/yay-bin/) [![yay-git](https://img.shields.io/aur/version/yay-git.svg?label=yay-git)](https://aur.archlinux.org/packages/yay-git/) [![GitHub license](https://img.shields.io/github/license/jguer/yay.svg)](https://github.com/Jguer/yay/blob/master/LICENSE)  
+[![yay](https://img.shields.io/aur/version/yay.svg?label=yay)](https://aur.archlinux.org/packages/yay/) [![yay-bin](https://img.shields.io/aur/version/yay-bin.svg?label=yay-bin)](https://aur.archlinux.org/packages/yay-bin/) [![yay-git](https://img.shields.io/aur/version/yay-git.svg?label=yay-git)](https://aur.archlinux.org/packages/yay-git/) [![GitHub license](https://img.shields.io/github/license/jguer/yay.svg)](https://github.com/Jguer/yay/blob/master/LICENSE)
 
 ## Objectives
 
@@ -13,22 +13,22 @@ So say hi to 20+1.
 
 Yay is based on the design of [yaourt](https://github.com/archlinuxfr/yaourt), [apacman](https://github.com/oshazard/apacman) and [pacaur](https://github.com/rmarquis/pacaur). It is developed with these objectives in mind:
 
-* Provide an interface for pacman
-* Yaourt-style interactive search/install
-* Minimal dependencies
-* Minimize user input
-* Know when git packages are due for upgrades
+- Provide an interface for pacman
+- Yaourt-style interactive search/install
+- Minimal dependencies
+- Minimize user input
+- Know when git packages are due for upgrades
 
 ## Features
 
-* Perform advanced dependency solving
-* Download PKGBUILDs from ABS or AUR
-* Tab-complete the AUR
-* Query user up-front for all input (prior to starting builds)
-* Narrow search terms (`yay linux header` will first search `linux` and then narrow on `header`)
-* Find matching package providers during search and allow selection
-* Remove make dependencies at the end of the build process
-* Run without sourcing PKGBUILD
+- Perform advanced dependency solving
+- Download PKGBUILDs from ABS or AUR
+- Tab-complete the AUR
+- Query user up-front for all input (prior to starting builds)
+- Narrow search terms (`yay linux header` will first search `linux` and then narrow on `header`)
+- Find matching package providers during search and allow selection
+- Remove make dependencies at the end of the build process
+- Run without sourcing PKGBUILD
 
 ## Installation
 
@@ -36,6 +36,7 @@ If you are migrating from another AUR helper, you can simply install Yay with th
 
 Alternatively, the initial installation of Yay can be done by cloning the PKGBUILD and
 building with makepkg:
+
 ```sh
 git clone https://aur.archlinux.org/yay.git
 cd yay
@@ -54,116 +55,80 @@ Reports should be made using makepkg and include the full output as well as any
 other relevant information. Never make reports using Yay or any other external
 tools.
 
-## Contributing
-
-Contributors are always welcome!
-
-If you plan to make any large changes or changes that may not be 100% agreed
-on, we suggest opening an issue detailing your ideas first.
-
-Otherwise send us a pull request and we will be happy to review it.
-
-### .endencies
-
-Yay depends on:
-
-* go (make only)
-* git
-* base-devel
-
-Note: Yay also depends on a few other projects (as vendored dependencies). These
-projects are stored in `vendor/`, are built into yay at build time, and do not
-need to be installed separately. These files are managed as go modules and should not be modified manually.
-
-Following are the dependencies managed as go modules:
-
-* https://github.com/Jguer/go-alpm
-* https://github.com/Morganamilo/go-srcinfo
-* https://github.com/Morganamilo/go-pacmanconf
-* https://github.com/mikkeloscar/aur
-
-### Building
-
-Run `make` to build Yay. This command will generate a binary called `yay` in
-the same directory as the Makefile.
-
-Note: Yay's Makefile sources its dependencies from `vendor/`. When
-building manually, dependencies will instead be sourced from `GOPATH`. To
-build against `vendor/` you must specify `-mod=vendor` in the build command.
-
-### Code Style
-
-All code should be formatted through `go fmt`. This tool will automatically
-format code for you. We recommend, however, that you write code in the proper
-style and use `go fmt` only to catch mistakes.
-
-### Testing
-
-Run `make test` to test Yay. This command will verify that the code is
-formatted correctly, run the code through `go vet`, and run unit tests.
-
 ## Frequently Asked Questions
 
 #### Yay does not display colored output. How do I fix it?
-  Make sure you have the `Color` option in your `/etc/pacman.conf`
-  (see issue [#123](https://github.com/Jguer/yay/issues/123)).
+
+Make sure you have the `Color` option in your `/etc/pacman.conf`
+(see issue [#123](https://github.com/Jguer/yay/issues/123)).
 
 #### Yay is not prompting to skip packages during system upgrade.
-  The default behavior was changed after
-  [v8.918](https://github.com/Jguer/yay/releases/tag/v8.918)
-  (see [3bdb534](https://github.com/Jguer/yay/commit/3bdb5343218d99d40f8a449b887348611f6bdbfc)
-  and issue [#554](https://github.com/Jguer/yay/issues/554)).
-  To restore the package-skip behavior use `--combinedupgrade` (make
-  it permanent by appending `--save`). Note: skipping packages will leave your
-  system in a
-  [partially-upgraded state](https://wiki.archlinux.org/index.php/System_maintenance#Partial_upgrades_are_unsupported).
+
+The default behavior was changed after
+[v8.918](https://github.com/Jguer/yay/releases/tag/v8.918)
+(see [3bdb534](https://github.com/Jguer/yay/commit/3bdb5343218d99d40f8a449b887348611f6bdbfc)
+and issue [#554](https://github.com/Jguer/yay/issues/554)).
+To restore the package-skip behavior use `--combinedupgrade` (make
+it permanent by appending `--save`). Note: skipping packages will leave your
+system in a
+[partially-upgraded state](https://wiki.archlinux.org/index.php/System_maintenance#Partial_upgrades_are_unsupported).
 
 #### Sometimes diffs are printed to the terminal, and other times they are paged via less. How do I fix this?
-  Yay uses `git diff` to display diffs, which by default tells less not to
-  page if the output can fit into one terminal length. This behavior can be
-  overridden by exporting your own flags (`export LESS=SRX`).
+
+Yay uses `git diff` to display diffs, which by default tells less not to
+page if the output can fit into one terminal length. This behavior can be
+overridden by exporting your own flags (`export LESS=SRX`).
 
 #### Yay is not asking me to edit PKGBUILDS, and I don't like the diff menu! What can I do?
-  `yay --editmenu --nodiffmenu --save`
+
+`yay --editmenu --nodiffmenu --save`
 
 #### How can I tell Yay to act only on AUR packages, or only on repo packages?
-  `yay -{OPERATION} --aur`
-  `yay -{OPERATION} --repo`
+
+`yay -{OPERATION} --aur`
+`yay -{OPERATION} --repo`
 
 #### An `Out Of Date AUR Packages` message is displayed. Why doesn't Yay update them?
-  This message does not mean that updated AUR packages are available. It means
-  the packages have been flagged out of date on the AUR, but
-  their maintainers have not yet updated the `PKGBUILD`s
-  (see [outdated AUR packages](https://wiki.archlinux.org/index.php/Arch_User_Repository#Foo_in_the_AUR_is_outdated.3B_what_should_I_do.3F)).
+
+This message does not mean that updated AUR packages are available. It means
+the packages have been flagged out of date on the AUR, but
+their maintainers have not yet updated the `PKGBUILD`s
+(see [outdated AUR packages](https://wiki.archlinux.org/index.php/Arch_User_Repository#Foo_in_the_AUR_is_outdated.3B_what_should_I_do.3F)).
 
 #### Yay doesn't install dependencies added to a PKGBUILD during installation.
-  Yay resolves all dependencies ahead of time. You are free to edit the
-  PKGBUILD in any way, but any problems you cause are your own and should not be
-  reported unless they can be reproduced with the original PKGBUILD.
+
+Yay resolves all dependencies ahead of time. You are free to edit the
+PKGBUILD in any way, but any problems you cause are your own and should not be
+reported unless they can be reproduced with the original PKGBUILD.
 
 #### I know my `-git` package has updates but yay doesn't offer to update it
+
 Yay uses an hash cache for development packages. Normally it is updated at the end of the package install with the message `Found git repo`.
 If you transition between aur helpers and did not install the devel package using yay at some point, it is possible it never got added to the cache. `yay -Y --gendb` will fix the current version of every devel package and start checking from there.
 
+#### I want to help out!
+
+Check `CONTRIBUTING.md` for more information.
+
 ## Examples of Custom Operations
 
-`yay <Search Term>`  
+`yay <Search Term>`
 &nbsp; &nbsp; &nbsp; &nbsp; Present package-installation selection menu.
 
-`yay -Ps`  
+`yay -Ps`
 &nbsp; &nbsp; &nbsp; &nbsp; Print system statistics.
 
-`yay -Yc`  
+`yay -Yc`
 &nbsp; &nbsp; &nbsp; &nbsp; Clean unneeded dependencies.
 
-`yay -G <AUR Package>`  
+`yay -G <AUR Package>`
 &nbsp; &nbsp; &nbsp; &nbsp; Download PKGBUILD from ABS or AUR.
 
-`yay -Y --gendb`  
+`yay -Y --gendb`
 &nbsp; &nbsp; &nbsp; &nbsp; Generate development package database used for devel update.
 
-`yay -Syu --devel --timeupdate`  
-&nbsp; &nbsp; &nbsp; &nbsp; Perform system upgrade, but also check for development package updates and use  
+`yay -Syu --devel --timeupdate`
+&nbsp; &nbsp; &nbsp; &nbsp; Perform system upgrade, but also check for development package updates and use
 &nbsp; &nbsp; &nbsp; &nbsp; PKGBUILD modification time (not version number) to determine update.
 
 ## Images

+ 1 - 1
build/aarch64.Dockerfile

@@ -9,5 +9,5 @@ RUN pacman -Sy; pacman --noconfirm -S gcc go git tar make
 
 ADD . .
 
-ARG MAKE_ARG=package
+ARG MAKE_ARG="package"
 RUN make ${MAKE_ARG}