Re: [aur-general] pkgbuild - suggestion

2016-02-18 Thread Justin Dray
Sometimes there may be a new version out, but the maintainer needs to test
and make sure it's working as expected. It may need a patch to work
correctly, or it may have a major flaw and every other distro is also
avoiding updating to the latest version. The flagging system, I feel at
least, is more so there for users to nudge a maintainer if they haven't
updated it. Often people can wait a few days after the upstream release for
the new version, and if they can't, they should be using the -git version
anyway.


Re: [aur-general] Continuous integration of AUR packages

2016-02-18 Thread Justin Dray
I was using the chroot tools for a year and a half or so before that, but
had some issues occasionally with things like updating it, or using package
caches inside the chroot, or other various things. I do still have the
shell script I used at the time, it was called by jenkins and cloned a
chroot based off a clean copy and numbered by the jenkins executor to
support multiple builds at once. But I managed a few tens of  thousands of
docker containers for work, and figured I could use a similar build system
for the arch packages, and it's been reliable for me since then.

As Doug said, you need to add the packages you build to a repository for
the next build to be able to install them, but that part is pretty simple
and explained on the arch wiki already.

So, in Jenkins I use the build generator plugin, and created a
parameterized job (config.xml here: http://hastebin.com/oyuqiwokem.xml)
that basically just calls `dmakepkg` on the git checkout for the aur
package; you just give the build an aur package name and it will generate
the job to track that package and any changes pushed to the AUR and build
it. (it polls git once an hour).

`dmakepkg` is in the AUR ( https://aur.archlinux.org/packages/dmakepkg-git/
) and is what I ended up making to build the packages inside a docker
container. It supports the same flags as makepkg (just passes them through)
but defaults to '--force --syncdeps --noconfirm' unless other flags are
specified (no point removing packages since the container is destroyed
after use). Uses a slightly modified version of the official docker arch
image, and is updated much more often (monthly at least instead of the 3-6
months they take). It auto-detects makepkg configs like SRCDEST/etc and
copies it in to the instance and bind mounts the folders specified, as well
as the pacman package cache, so all the builds follow the makepkg config on
the host, but using everything else from a clean environment. If you make
your own repo and add it to your host, you can use `-x` flag to use the
host's pacman.conf inside the container.


Re: [aur-general] Continuous integration of AUR packages

2016-02-18 Thread Doug Newgard
On Thu, 18 Feb 2016 12:51:19 +0100
Baptiste Jonglez  wrote:

> Hi,
>
> The scripts in devtools [1] look like they should work just fine to
> automate these kind of builds.  After all, they are used to build the
> official Archlinux packages.
> 
> However, I found that the build scripts do not really handle dependencies.
> When building a given package, they just install deps and makedeps from
> the existing Archlinux repositories.  This is an issue when AUR packages
> depend on each other, because then dependencies cannot be installed from
> the Archlinux repositories...
...
> Thanks,
> Baptiste
> 

So create you own local repository and add the binary packages to it after
they're built.


pgp2gLw_2gmPF.pgp
Description: OpenPGP digital signature


Re: [aur-general] Continuous integration of AUR packages

2016-02-18 Thread Baptiste Jonglez
Hi,

On Thu, Feb 18, 2016 at 12:25:53PM +, Justin Dray wrote:
> I actually have a Jenkins setup for my packages that does almost exactly
> that, I have a job generator build that I give an AUR package name to and
> that's all the config for new packages, and it builds them in a docker
> container.
> 
> You can obviously set up dependencies between the jobs to build in order,
> but that part isn't automatic yet. Its been pretty reliable for me over the
> past year or so since I last really changed anything.
> 
> If you're interested, let me know and I can share the scripts and stuff.
> Just on my phone at the moment or I would link them here.

Yes, I would be interested!

Out of curiosity, why do you use docker containers instead of the
"official" method with chroots?

  https://wiki.archlinux.org/index.php/DeveloperWiki:Building_in_a_Clean_Chroot


> Cheers,
> Justin
> 
> On Thu, Feb 18, 2016, 9:51 PM Baptiste Jonglez 
> wrote:
> 
> > Hi,
> >
> > I would like to run some kind of continuous integration of my AUR
> > packages.  The goal is to know when a package I maintain fails to build
> > because either:
> >
> > 1/ its dependencies have been updated (new API, new incompatible version
> >of GCC, ...)
> >
> > 2/ for -git packages, changes made upstream broke something (new
> >dependency needed, new build system...)
> >
> > The scripts in devtools [1] look like they should work just fine to
> > automate these kind of builds.  After all, they are used to build the
> > official Archlinux packages.
> >
> > However, I found that the build scripts do not really handle dependencies.
> > When building a given package, they just install deps and makedeps from
> > the existing Archlinux repositories.  This is an issue when AUR packages
> > depend on each other, because then dependencies cannot be installed from
> > the Archlinux repositories...
> >
> > It *is* possible to manually pass packages to install in the chroot before
> > building, but this is far from convenient.  For instance, ring-daemon
> > depends on opendht, so I would need to do this:
> >
> > cd opendht
> > extra-x86_64-build
> > cd ../ring-daemon
> > extra-x86_64-build -- -I ../opendht/opendht-0.5.1-1-x86_64.pkg.tar.xz
> >
> > When there are multiple dependencies, it quickly becomes a nightmare to
> > automate (especially because dependencies need to be passed in the right
> > order).
> >
> > Is there any script that automates dependency handling when building?
> > Basically, it would probably need to perform a topological sort, build
> > packages in this order, and push them to a local repository to be able to
> > build later packages.
> > Or did I take the wrong approach entirely?
> >
> > Thanks,
> > Baptiste
> >
> > [1] https://projects.archlinux.org/devtools.git/
> >
> > PS : Some existing efforts I found about CI with Arch:
> >
> > -
> > https://lists.archlinux.org/pipermail/arch-dev-public/2014-November/026757.html
> >   https://jenkins.arch-ci.org/
> >   No script provided, site appears to be down
> >
> > - http://openbuildservice.org/2012/09/10/arch-linux-support/
> >   Source code is unreadable (enormous Perl scripts, no modularity)
> >
> >


signature.asc
Description: PGP signature


Re: [aur-general] pkgbuild - suggestion

2016-02-18 Thread Jose Riha
automatic notification sending is i believe a way to hell (10th+ 
notification for the same package would only make maintainer more angry). 
the idea is to only show it (when asked to) to user. then it's up to 
him/her to either notify maintainer, make a patch and do the update 
him/herself or even uninstall the package (if some serious problem has 
been found with the current version).


On Wed, 17 Feb 2016, Félix Piédallu wrote:




Le 17 février 2016 23:11:03 GMT+01:00, Jozef Riha  a écrit :

hello,

this might not be a perfect place to propose new things to pkgbuild but
otoh it does affect pkgbuild and does make sense for aur packages. my
point
is: at the moment the only way that the aur maintainers learn about
upstream version bump is either by a user notification system (flags on
aur) or some external (rss for instance) checks. this may work to some
extent but wouldn't it be nice if the checking function would be the
part
of the pkgbuild (a new function alongside prepare(), build(),
package()..)
and this function would be invoked by an aur wrapper such as yaourt?

the implementation probably would not be trivial due to security
concerns
but in the end, maybe having a possibility to process an html page with
a
regex or read rss would be a good start.

j


What do u mean exactly ? That when users install the package, some yaourt/makepkg tool 
sends a "feedback" of the version ?
That would work mostly for CVS packages, when executing pkgver().
Wouldn't it better to have this kind of check executed on the AUR server ? But 
that would mean a (weekly ?) download of the package on the AUR server... Not 
the best solution i think :/

--
Envoyé de mon appareil Android avec K-9 Mail. Veuillez excuser ma brièveté.



Re: [aur-general] Continuous integration of AUR packages

2016-02-18 Thread Justin Dray
I actually have a Jenkins setup for my packages that does almost exactly
that, I have a job generator build that I give an AUR package name to and
that's all the config for new packages, and it builds them in a docker
container.

You can obviously set up dependencies between the jobs to build in order,
but that part isn't automatic yet. Its been pretty reliable for me over the
past year or so since I last really changed anything.

If you're interested, let me know and I can share the scripts and stuff.
Just on my phone at the moment or I would link them here.

Cheers,
Justin

On Thu, Feb 18, 2016, 9:51 PM Baptiste Jonglez 
wrote:

> Hi,
>
> I would like to run some kind of continuous integration of my AUR
> packages.  The goal is to know when a package I maintain fails to build
> because either:
>
> 1/ its dependencies have been updated (new API, new incompatible version
>of GCC, ...)
>
> 2/ for -git packages, changes made upstream broke something (new
>dependency needed, new build system...)
>
> The scripts in devtools [1] look like they should work just fine to
> automate these kind of builds.  After all, they are used to build the
> official Archlinux packages.
>
> However, I found that the build scripts do not really handle dependencies.
> When building a given package, they just install deps and makedeps from
> the existing Archlinux repositories.  This is an issue when AUR packages
> depend on each other, because then dependencies cannot be installed from
> the Archlinux repositories...
>
> It *is* possible to manually pass packages to install in the chroot before
> building, but this is far from convenient.  For instance, ring-daemon
> depends on opendht, so I would need to do this:
>
> cd opendht
> extra-x86_64-build
> cd ../ring-daemon
> extra-x86_64-build -- -I ../opendht/opendht-0.5.1-1-x86_64.pkg.tar.xz
>
> When there are multiple dependencies, it quickly becomes a nightmare to
> automate (especially because dependencies need to be passed in the right
> order).
>
> Is there any script that automates dependency handling when building?
> Basically, it would probably need to perform a topological sort, build
> packages in this order, and push them to a local repository to be able to
> build later packages.
> Or did I take the wrong approach entirely?
>
> Thanks,
> Baptiste
>
> [1] https://projects.archlinux.org/devtools.git/
>
> PS : Some existing efforts I found about CI with Arch:
>
> -
> https://lists.archlinux.org/pipermail/arch-dev-public/2014-November/026757.html
>   https://jenkins.arch-ci.org/
>   No script provided, site appears to be down
>
> - http://openbuildservice.org/2012/09/10/arch-linux-support/
>   Source code is unreadable (enormous Perl scripts, no modularity)
>
>


[aur-general] Continuous integration of AUR packages

2016-02-18 Thread Baptiste Jonglez
Hi,

I would like to run some kind of continuous integration of my AUR
packages.  The goal is to know when a package I maintain fails to build
because either:

1/ its dependencies have been updated (new API, new incompatible version
   of GCC, ...)

2/ for -git packages, changes made upstream broke something (new
   dependency needed, new build system...)

The scripts in devtools [1] look like they should work just fine to
automate these kind of builds.  After all, they are used to build the
official Archlinux packages.

However, I found that the build scripts do not really handle dependencies.
When building a given package, they just install deps and makedeps from
the existing Archlinux repositories.  This is an issue when AUR packages
depend on each other, because then dependencies cannot be installed from
the Archlinux repositories...

It *is* possible to manually pass packages to install in the chroot before
building, but this is far from convenient.  For instance, ring-daemon
depends on opendht, so I would need to do this:

cd opendht
extra-x86_64-build
cd ../ring-daemon
extra-x86_64-build -- -I ../opendht/opendht-0.5.1-1-x86_64.pkg.tar.xz

When there are multiple dependencies, it quickly becomes a nightmare to
automate (especially because dependencies need to be passed in the right
order).

Is there any script that automates dependency handling when building?
Basically, it would probably need to perform a topological sort, build
packages in this order, and push them to a local repository to be able to
build later packages.
Or did I take the wrong approach entirely?

Thanks,
Baptiste

[1] https://projects.archlinux.org/devtools.git/

PS : Some existing efforts I found about CI with Arch:

- 
https://lists.archlinux.org/pipermail/arch-dev-public/2014-November/026757.html
  https://jenkins.arch-ci.org/ 
  No script provided, site appears to be down

- http://openbuildservice.org/2012/09/10/arch-linux-support/
  Source code is unreadable (enormous Perl scripts, no modularity)



signature.asc
Description: PGP signature


Re: [aur-general] pkgbuild - suggestion

2016-02-18 Thread Jose Riha
i think it is the job of a maintainer to keep the pkgbuild updated (while 
buildable at the same time). with keeping an eye on new upstream 
releases.. not sure. why the "notify" button on aur webpage exists in the 
first place. and then you also have pkgbuilds that lost their maintainers, 
maintainer became unresponsive (is on vacation, ill, whatever). in such 
cases you probably still want to be updated or at least be informed there 
are updates pending.


to be honest i did not think this through - having defined this as a 
function would indeed require repetitious pull from aur server which isn't 
ideal. running weekly checks on aur server itself i believe really defeats 
the kiss principle and picturing myself as an aur maintainer i would not 
like to do it.


thank you for suggesting urlwatch - seems like a nice tool that simply 
does the job. i was able to quickly cobble a oneliner to keep track of my 
favourite tool: gpsprune. all i had to do was just put the gpsprune 
website to urls.txt and define a hook that parses the useful information 
(i certainly do not want to watch changes on the whole page).


in the end it looks like this:

def filter(url, data):
m = re.search(r'.*Runnable code(.+)\.jar.*',html2txt.html2text(data, 
method='re'), re.MULTILINE)
return m.group(1)

now what if this is defined inside pkgbuild on a single line (so that it 
stays in the local db), for instance like this:


UrlWatcher=('http://activityworkshop.net/software/gpsprune/download.html','.*Runnable 
code(.+)\.jar.*',1)


i don't think this leaves much space for attacks on system 
security/integrity - the arguments are being parsed by urlwatcher, not 
executed.


so the idea is that i normally do yaourt -Syu --aur daily at present. 
wouldn't it be nice if one could do (say - once a week) yaourt -Syu --aur 
--check-up-stream-changes and get:


* gpsprune - possibly a new upstream version detected
?

cheers,

jose

On Wed, 17 Feb 2016, Eli Schwartz wrote:


On 02/17/2016 05:11 PM, Jozef Riha wrote:

hello,

this might not be a perfect place to propose new things to pkgbuild but
otoh it does affect pkgbuild and does make sense for aur packages. my point
is: at the moment the only way that the aur maintainers learn about
upstream version bump is either by a user notification system (flags on
aur) or some external (rss for instance) checks. this may work to some
extent but wouldn't it be nice if the checking function would be the part
of the pkgbuild (a new function alongside prepare(), build(), package()..)
and this function would be invoked by an aur wrapper such as yaourt?

the implementation probably would not be trivial due to security concerns
but in the end, maybe having a possibility to process an html page with a
regex or read rss would be a good start.

j



As you rightly pointed out, that is the job of the AUR *maintainer*.


Check out urlwatch...

--
Eli Schwartz



[aur-general] Signoff report for [community-testing]

2016-02-18 Thread Arch Website Notification
=== Signoff report for [community-testing] ===
https://www.archlinux.org/packages/signoffs/

There are currently:
* 1 new package in last 24 hours
* 0 known bad packages
* 0 packages not accepting signoffs
* 0 fully signed off packages
* 8 packages missing signoffs
* 4 packages older than 14 days

(Note: the word 'package' as used here refers to packages as grouped by
pkgbase, architecture, and repository; e.g., one PKGBUILD produces one
package per architecture, even if it is a split package.)


== New packages in [community-testing] in last 24 hours (1 total) ==

* python-hypothesis-3.0.0-1 (any)


== Incomplete signoffs for [community] (8 total) ==

* pdfsam-3.0.1-1 (any)
0/2 signoffs
* python-hypothesis-3.0.0-1 (any)
0/2 signoffs
* gdal-2.0.1-7 (i686)
0/1 signoffs
* jack2-1.9.10-4 (i686)
0/1 signoffs
* postgis-2.2.1-2 (i686)
0/1 signoffs
* gdal-2.0.1-7 (x86_64)
0/2 signoffs
* jack2-1.9.10-4 (x86_64)
0/2 signoffs
* postgis-2.2.1-2 (x86_64)
0/2 signoffs


== All packages in [community-testing] for more than 14 days (4 total) ==

* postgis-2.2.1-2 (i686), since 2016-01-22
* postgis-2.2.1-2 (x86_64), since 2016-01-22
* gdal-2.0.1-7 (i686), since 2016-01-23
* gdal-2.0.1-7 (x86_64), since 2016-01-23


== Top five in signoffs in last 24 hours ==

1. djgera - 2 signoffs