Logo TIB AV-Portal Logo TIB AV-Portal

a stitch in time: jhbuild

Video in TIB AV-Portal: a stitch in time: jhbuild

Formal Metadata

a stitch in time: jhbuild
staying on top of portability before it becomes a problem
Title of Series
CC Attribution - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this license.
Release Date

Content Metadata

Subject Area
BSD porters have always struggled with portability of software written by Linux users and never tested elsewhere. GNOME has been particularly difficult. New releases would come with new headaches, every six months. By the time the issues were addressed and fixed upstream, a new release would be out with new issues. In 2014, the FreeBSD GNOME Project changed their approach. jhbuild is now building the full GNOME stack on FreeBSD systems, at least twice daily, directly out of upstream git master. When portability issues creep in, they are addressed immediately — often with patches going upstream the same day. When it comes time to build ports from release tarballs, there are no surprises. A direct result of this effort has been two on-time releases of GNOME (3.12 and 3.14) in FreeBSD and GNOME 3 finally landing in the official ports collection. This talk will discuss what was done and how it changed the relationship of the FreeBSD and GNOME projects as well as discussing important issues going forward.
Blocks code patched time projects The list sets effects bits Bugs versions Computer animation real vector file system testing sort figure platforms operating system libraries systems
man regular Computer animation system ones maximal basis Arm van
building code inner time unit ones compiler part dimension Bugs wikis mathematics component-based kernel position systems constraints sample effects bits sun variables management orders Right level sort record web pages point track functionality files patched maximal Codes portable fields powerful attributes Twitter MACH versions specific terms operations testing report compilers platforms modules shift projects expression directories DoS maintenance system call compiler potential words kernel Computer animation commitment environment visualization Universal life operating system Windows Abstract libraries
man Regular Expressions patched maximal experts Arm portable number Computer animation WPAN sort Gamma formal spacetime
webcams email code time ones sets part energy consultant wikis single BUS position descriptions systems man email staff bits open subsets Frequency response management editors sort point services files link patched student events portable powerful number specific naturally Software Hardware conditions batch projects extreme maintenance Symbolic kernel Computer animation Software topology Blog des protocols operating system
Actions attitudes states code time sets argument part energy subset wikis image mathematics hypermedia different cores Manager file system Conversation Office Security systems area algorithm Arm wrappers Development The list effects bits category means processes orders configuration website normal pattern Right absolute values figure sort point web pages filters Suspension (chemistry) Slides implementation functionality files Open Source patched machine Mass Continuous Integration events fields number goods string level testing structure reverse absolute values conditions form batch key Super projects format Databases directories applications system call equivalence words kernel Computer animation environment case life objects operating system libraries
well yet again was so I'm Ryan working in a member of known project for a long time and a sort of a small while ago undertook improving relationships of known intricacies and so the idea is that the introduction vector and so I notice that there are 2 big problems as sort of approaching from the problem that can only add however there is also a problem in previously which was that the known 1 previously was not happy uh there's like Britain 2 in the ports like version 3 and there's many many years in the subregion to in there and it was kind of bad situation because gonna mistaken unwieldy and it tends to touch a lot of things and every time a new version came out it would be like OK I'm what's broken out again lot everything's broken so we have followed by a bunch of bugs get effects extreme hopefully will be flexible exploration OK great it's fixed but now over to other stuff is broken down and this is just because you know if you're doing something only once every 6 months or and sometimes longer it's not fast enough to catch the problems happening but on the other side and maintained you I would just like the base library and it's kind of a mess can supportability we have so much taxes if death code around certain things like stack instead the offences that and just you know the basics of like Henry figure out how many free blocks this file system there are about 8 different ways of doing this depending on the operating system you're on the gold versions of Solaris and stuff I don't even know how much of code we use this is a problem for me because I can wonder if that and kind of wondering whether there is somebody you angry at me he I don't know and so wouldn't it be nice if we had like an actual set of supported systems that we knew that we supported and we have a way of testing the systems and so we sort of decided and you live and if you would do something and says this is the way this is pretty much writing all of them because you need you that was so we said we're gonna move away from this idea that we theoretically support anyone wants to come to us and we're now trying to nail down more concretely an idea that we support these platforms because we care about them and we know we support them because we actually tested but we it's not just theoretical hasten the Senate after long time ago maybe it's still working it's it's something that we're testing regularly so we have a list of platforms that we actually target and we actually do test regularly and most of them and we we've got a little bit better about saying no to people who just show up late with 110 patches richer operating systems and unless they can commit that they're going to stay around and keep updating and there was this long list of all the was that I have a sort of looks like
from the the sort of like a first-class candidates here than the ones that are like really getting than on basically daily basis
utilizing the support by a lake you know it's not as good and we would prefer if people could do more severe weather the excellence and we also have we
also like toolchain requirements a saying you know your compiler must support these features as well even if they're not in you necessarily mandated by posits and that that page I just last really goes into details about why we chose this approach 1 of the things that that the dimensions is that you can't build something like and on top of you just can't do any positive great of it and it's very well written it's it tends not to be too ambiguous and you get a very good idea what you're like you buy posits that but is simply not enough but you know this is really simple things like power management and completely silent on this topic but you know how changes the sometimes I don't know left to left of landed inside posits is really minimal and we need more than I and what are the same before the there's is that you can you can talk about OK where were during deposits so it should work all systems but in practice that doesn't work either because there's always something that you know even if you think you follow this back you actually get in and you using some specific behavior that you knows only on Linux or something and you don't know that when you run it on other systems even if they are posits a life that is going to break or and unless you actually testing on the system you never invited about about and and that's a reason to an important point which is that nobody did placates previously here any of the estate is there's this idea going around that it's really true but it's not that we really I mean some people alike friendly and some people you couldn't give a damn I think is probably the record describing it just like OK whatever you're over there but nobody is actively hostile and and even like the people who don't really care if you show up with patches hand they're generally pretty good about applying them but they really just a matter of you know me make mistakes what can we do we we all are running Linux and known for the most part when we write code and occasionally we depend on future we don't realize this isn't posits honest mistake and and it's really good and we appreciate it if people are calling sort of stuff but but there is some sort of another kind of issue in which you know the simplest thing about stuff it's not about 6 of engaño we sort of have this approach where we call training the swamps and basically it's OK I'm everything scraps we need we need to build some feature and we tend to have what we have here so you can easily plum through the whole platform layer in order to get what we want and that often means that we're writing new stuff and you know like other things like this and in fact I'm coming originally from someone quite involved and don't project and and these things are doing useful stuff for us like I wanna mention before about an API for changing the times of war or the date and time or changing the hosting stuff like this before in the known these word parts of going known and there'd dynamite system-dependent ways in this we're back with lots of death is that nobody ever looked at and it was running his route and and were were happy not to have that in our coding if we can depend on the future is provided by the operating system so I was quite interesting for me to focus on the DSP is a little bit more is because that from from the sample and you have a short we have to support Windows Mac all that but I do know itself doesn't target windows and so if not operating systems like DSP can always the desktop is basically a Linux-only effect and so having having another platform that we can carry it is quite useful for us in terms of you know going from the theoretically portable to it's actually portable and even even just having like just 1 like previously for example you find really a lot of the portability issues and just because you know there's a different combined so inclined induces the kind of in some ways it's same compiler because they support all the same features but you do find a lot more about this just by having 1 of the C compiler and then after that 1 extra you know you get maybe 3 C compilers you get diminishing returns you quite quickly as they would like to see kernel anything else I'm just having like that 1 extra is confined really a lot of portability issues because any Linux specific feature instantly you find that is it worth it applies so all that it's a it's an interesting question and sometimes that's true but it's actually often falls I could so I had to give an example of something that we recently added support for and you have the time that depends on adjacency feature and therefore we cannot use it and you have itself and there's this thing called a cleanup attribute in GCC which is phenomenal useful on and it allows you to define an attribute on a local variable that when he goes out of scope it automatically gets a function call on it and that will you know 3 or whatever this could
phenomenally include improve our code quality and we can use it because we have to be portable right and we often the things like this that like if only we had this compiler future everywhere we could do this thing that would make our code really a lot more readable a lot better quality and gets all and that does her code quality often the word you want yeah but again in lots of genome projects is that they have stuff home until last year and thinking about it and lot lots of guns suffered only targets Linux infringes c will use that stuff that and you would we also to target Mac OS and Windows or Mac OS again would be a problem but here we return Visual Studio so it's an ogre interior like unit using tell components and the mother of all that stuff is still supported and you so yeah we can rely future which is unfortunate and that like to have but yeah often if you trends were multiple systems that it does force you to think in a more abstract way and sometimes that leads to improvements but I and actually argue that honestly just being able to do it once and you in a certain way is almost always better from the code being claim actually a few abstractions I think can actually believe that the and discuss it it's less good overall so yeah so a little more detail about what I was talking about earlier sort of going back over the previously cited things them but there was going to imports forever after going through his release of the Apple battle as time here the new versions of this is hard to say so the up to date with that so a while ago and they sort of approach the genome previously came and said hey there is a single DHL if you should run and and which field is for those who don't know what is it's sort of like a medical build system can only is really very large it's like it if you talk about it and it's closely related external dependencies you're talking like 160 tarballs and building all of those is a a bit of a pain so we have J told which does for us and and you know it'll going down load and little configure it make make solve and it does something cool you can install in your home directory and then will set up in a bunch of environment variables and all the library capital itself so that when you build the next module which depends on the first one it can find the include files and libraries all that in your home directory so you can use without messing up your system and 1 of the picture I James constraint is that the little bit of history that is a good and what 1 of the really cool things will change there is that the problem of operation is that it takes all those operative get on and it takes a little bit master so if you want to know what's engaño like as of the thing that I committed 5 minutes ago you can compile a change but you're going back but the reason that's really cool is that you can't really keep track of any issues that might be seeking to the code at any given time and certainly if we're doing that on previous and then we get a really good idea any potential portability issues the sneaking into the code at any given time and which is wonderful and this where the whole stitch in time saves 9 thing comes in when you find somebody did a comment that cause the problem you already you find you know maybe written once a day they work yesterday it doesn't work today so maybe there is like 10 candidates yeah this looks like the 1 becomes a problem and you know a person expression their mind I can file a bug in their their their probably gonna have some idea of what they can do to fix it at that point the verses if I'm waiting you know 6 months or a year later when the release comes it's not working 0 geez OK what changed from I don't even know how to track the sun whose fault it is university Figueroa committed is I go to that person OK and you remember this thing you did a year ago yeah that's present the trouble now can you re-evaluate that will no sorry I'm like I'm totally something else that you attend do that for you and so and then the previously contained in article has been a big part of this is basically every day running JH builds on previous you know least once a day but in the and also another person is doing is very actively and when stuff breaks the filing by upstream right away and this isn't just this isn't just portability bugs and mean we have we have continuous builders as well running on Linux engaño but sometimes that is the guys the 1st ones to find problems or society did you actually test this before you commitment and these puzzling to and this is this is really resulted in a fundamental shift in the relationship I think between creative thinking of on because when you get contributors and maintainers really become accustomed to receiving bug reports from previous these people know and that they're pretty good in my opinion replying to we have a wiki page actually should allow
this sort of details that everything that's been going on
here so space is huge i mean you since from where it's it's really impressive like this is
you know if you wanna get itself together to all this stuff and it is any outstanding issues and you know which is
some low priorities but the most impressive thing is like this are the issues that we
solved on and that goes on like this is a huge number of patches that upstream and applied by testing happily ever addressing previously portability issues
and that was is growing all the time 1 batch rejected upstream which I think is pretty cool but was touching in student and I talk to maintain a a very something he might change his mind so like that of the response function is been greater than that but yeah so that's really good
and yet as I said you also it's pretty good and it's just getting bigger and so what so 1 of the things I was mentioning is that how posits is not is not good enough for us and so you know we're doing things like log the other for power management staff and new figuring out which such is the active 1 and we're depending on things like you did for enumerating hardware and all that but it and this my opinion and it's something that I've I've talked about releasing the and and they're sort of on board with this idea of the the approach to portability that I like is it you depend on EPA not a particular piece of software in it and when I say anything I mean like you know the a header file you include that has a certain set of symbols of a given name or PC-File patching things you link and your project and again due to a certain set of symbols that you can use in the project but so that this is for things like say I wanted to enumerate all the web cams on the system it would be good if I had just a single PC file conclude that they got me an API that looked a certain way that I could use that I could do that every time that would be really good for me from the upstream standpoint and editor that we have this it's the devil monitoring and it's not the most portable API so that there's nothing stopping people from implementing a per say but I can understand why people would want to because it's very Linux specific like it's putting stuff from the kernel and there are other things like the 1 in the of the other system the service API is I think they're really good in the eyes of and I wish people would just implement them and it would it would never be I intend to depend on society for example but to depend on anyone who's willing to provide these at the US and in my opinion that is sort of the best approach to portability because for lack of that and basically having to entirely different ends of destined code and stuff like that so so we we do need to depend on more than just pilots but in a way it posits kind is this a good idea about what when we respect for what we expect from the operating system and then everybody can implement that and 1 of the cool things about a lot of society is you can have it has a wiki page where it says here is the that various API we implemented system and here are the ones we think should be reasonably portable to other systems and by the way here's where there are documented and stuff conditions for and we don't unintentionally and and on that topic is I think system D I mean if you look at we started in Holland like the device to and we don't like death as we had but were were going to a place and that I NEED FOR that as I said we we sort of asserted friends and 1 of the known we need to do stuff had we get this stuff done it all starts what can we really do about it and so we we started doing things and it was kind of the point where the energy busses new we're kind of getting a grasp of how we rated the bus services how did what we needed to you for a while but it was clearly certain experimental foreign into this new world and was in great and similar similarly consultation on you know it did would immediately but it was a great so we're certainly not a point where we have and really a lot of this is being done in the event of system the and we have for the 1st time something that people actually feel good about it and that is good and I think that is around for a while so when when you see people ask me well you know we do we did the whole thing and you guys like cryptococcal various unions and things can be and I don't think so i think system easier here for a while so basic stuff like just what it what I think anybody who's interested in any kind of large software projects that porting of the BST is get if you're maintaining is in the port street you're probably doing something wrong but not always because gets came 1st of but this is something that I've been involved in you want to for a long time and went user definitely project that has an interesting history the grand project as well it hasn't always been friendly but we sort of this sort developed a certain ascent protocol of what is considered good behavior for interacting with upstream projects and their upstream 1st is basically the number on principle if you get a problem and you need to fix that patch your 1st step should be getting a patch extreme but but it we were the 1st comes in is that OK so you centered upstream and other ignoring you because the maintainers this year whatever by all means that that in the ports tree as a as a patch against the package and when you do that nature at the top of it as a description as part of that you know provide a link to the blog explain why it's needed and maybe even give a week to see if they can get in and then you could you know maybe they they change it a little to make it a little bit better in some way that only they would know how to do because of the
project and you get a patch by doing and so I'm kind of getting to the end of like the main pieces of things on this on a bunch of points here I can about the audience would give a bigger than that of my whistling wish-list items for things that can be better DST of getting this stuff implanted would be really nice about and they take the 64 bit good but mostly because it would let us set I take you events for absolute monotonic time with microsecond nanosecond accuracy and because if you only have 32 bit counters and you want my resignation and 2nd accuracy against the monotonic time that stops working after having no some number of days of our time so you basically need 64 bit for that but yeah but the sucks please some kind of a final notification API good so all of the world it sucks effects that I have to use this yes but on the a topic is if we could make this a little bit better I would ask for the implementation of this but which is something yeah this Mac OS as as animate set of filtering node slightly less horrible and basically you can open a file like this just like 0 read-only or read-write Sato Ezequiel only I'm and you can't do anything the final accepts the that to you and then you get notifications about changes in the biggest difference there is that you can actually unmount the file system that you did this on so we can watch a files on removable media yeah because we know we have to pull basically that is so because I did so that says that this will be very easy to implement and runs and doing it next week so that the tonight so you better at I'm just a miscellaneous stuff so it's on our page with 2 is still setting our pattern in appropriate ways obviously equal accepting that but you are so you start selling LA files for the most part of the world or both but are path is still getting set on which is annoying but that's it's worth it well if you look in your applications all directory just you know what on the libraries and see if there are and if they don't then it's good but if they do think that they do and this is another huge 1 house as they said like what we consider an API is often package in file and there's a lot of things in the base system in the that inflating here is that we expect a pack music files and they don't as so we have to you know GeoHack configure arguments in order to get the registered users of the of the whole our under the use of of things like that live in so yeah yeah OK that's good so this is really and I might have a to do list and everybody's mind yeah originally had already done that's all over the world will be used for OK and sincere working on was so when you're working on tonight European only tonight and tomorrow nite you have to work on this 1 that the really cool if I could ask which package do I have to install in order to get this file on my system this for all walk or 1 of the right is the with the structure of this this thing actually I think it was originally created that just about security about all yeah so this will help a lot because gage field has a feature called the steps and there's a signal was attended dependencies and you saw at the start of that we take gage it said take PTG install this and having j filters I feel the figure that itself if it has some way of saying which package provides source so that the call and that is I just and that's that's pretty funny is you have this liturgy on the previously and most functions and energy arm underscore summer foreign somewhere he underscore and there's there's another popular library that also use you can discover and yeah we both have a similar so be known Program Committee anthology on which is a problem for the and so that in some ways can 1 it's a conversation and I'm pretty much done with the slides and if anybody wants to talk about you know experience Adelaide died approaching province and this happened in the long evidence that the critical so point it would
have to do is I would really like to know media whatever it is that it was in your book words and it's wrong wrong wrong you that was probably 1 of the people in his life in that yeah and I mean my approach always been while I was laying approach since a couple years ago I decided in this let's make everybody happy than just as a working anymore but if somebody's going to show up in my directory and it's certainly if it's going to improve my code quality by all means and if I'd done something that sonic specific and there is a better posits equivalent and there's nothing worse about it then by all means and having you that I and I I think almost anybody would do this like we we get things like 0 you're assuming a batch feature and state you can't do that everybody's happy fixes and but not a all of of the yeah that's absolutely right so yeah and if so when yeah that's so this is this is the use of the core of so what is it goes all the people you will be you know this is not but to tell you the truth I haven't talked at on this topic he is actually actively and places the use on of the few people I know but it actually I he wishes that like all of the disease which is die so that everybody focuses on Linux instead but he is the only 1 I know of like the singular person I know that has this extreme attitude on the test but now I know I don't think you can do that and I think you can have bastion they think he you know we we have a single last idea at which is that we want to build this whole operating system are from Linux Michael that's all the way up and then a Lester different people means a lot of different things and and 1 thing it was was this continuous integration we would build this image for a virtual machines that we can test and do it every day to actually do it on every 2 men and this is like that part of what I was but what I'm mostly was in my opinion is just a list of things that you have to have a new system in order for it to be considered a genomewide site this historic property problem in the US and I would say that previously doesn't meet this criteria but only because you don't have things like network manager and and if you got all these things and it was working at the same level as I wouldn't necessarily say that this can be done on what's in the same sense given what do you want to be part of the of the of the the life that we are with all of our model for all of them when it is the 1st of the year all of you who system for which you are free going to be the yeah so this is the our world this is a conversation I had on with the system do you guys a couple of times in fact that 1 rejected patches on my wiki page is basically and this and this goes back to the saying that for me an API is effective fire and saying that OK you implement this API and you provide inspection the file that it only implements a subset of the API said to me that's that's ever been kind of like that I would I would rather and and that's what this but was about is if there's something like lot in that has a whole bunch of things and 1 API i wanna not related to 1 another when they're really maybe that's 3 ideas and and were were talking give us there so it doesn't make as much sense but in this case was you'd have and you know you have all the UW guys and then separately you had this thing we could look at PCI ladies and stuff like that and this is all group together under a single API 1 captured file and we want to just use the harbor DB look up which in no way dependent on anything in the kernel is basically half people look up a database file there's no reason that couldn't in separate and having that is a separate package and therefore separate it here in my opinion is something I wanted to to work with some form of all of our use of hear the order of the most promising to the 1st is the use of 1 you all heard during the course of the of the of the which is good for you to know that is you intend to provide like you of API or to provide an equivalent API also used solely for the police to hear from all of those things are released by the end of the the 1st people to use it yet so in in my opinion this is unacceptable in fact I I I don't want a situation where normal applications are expected to deal with 1 area the but something that I think would be far more likely and people would find to be more acceptable so it was something in jail for example I would traps both of them and provides an even higher level and nicely g object defined API and we deal with the extraction and use them because they really don't consider it in any way appropriate than normal applications should have to do this you would you would expect that this is cool so what this is all yeah and that's that's something that I wanted to work on it is something that you know it's on the way to gage is something we should get this but it's not something that I personally have a lot of time to work on and I got the ball into a lot of stuff like that application environment stuff which is pretty interesting work to but if somebody wanted to undertake a project of making a high-level wrapper in GAO would wrap you and also equally well wrapped whatever via key is going to be forthcoming value project at the very much interest in and that's the kind of thing they can on people even like because you don't have it gets the job done it's not a great yeah so if they can have a nice it's easier for them to use and be more portable at same time than the master for everybody to see the whole nearly weird string year old but are you all the yeah as far as I see it that it would be pretty much the only acceptable way forward for dinner having in each application if deaf or whatever is not again forced to in the or the or the books or yes so if anybody wanted to work on this kind of thing I would really be happy to sedimentary this project and say OK you know this is what I think you guys should look like and then go and do it and I would might be happy about that the world that could be yeah and again for log and the and there's a lot of it a log in the that we need to use but again it's only a subset of some of them and it's looking that subset in sort of a nice way to g object could also be something that's appealing all along and he has a pretty decent you already have that but there are some things like it makes you deal directly with file descriptors for the suspense out from probably mostly would rather deal with the G object instead for example goal and thank you for coming closer to the area of the the apple does best I think you can identify is pretty crappy by the then notify but even identifies like a world better than what is available previously ISO or if you there is an idea that instead of writing up an FTE inside of taking you like telling about and I noticed that the house was derived from the office of the all the other half of the events is good for height most high-level things that's but it doesn't it doesn't work the way that we kind of have already begun working you live in fact I'm it's more like you know what changed since reduce this is more about like online all the time and it's not interested in something that happen when the system was done because the says and exposes concept I would say if I were to tell you like the things that I don't like what I notify for example and 1 of them would be that it's extremely difficult to know which file and actually monitoring because if you imagine that I think race conditions a lot of energy if I imagine I have somebody basically actively attacking my algorithm to monitor files I could imagine I get into a situation where I have a bunch of files being renamed II notified a file named and I would think it's like renamed out from under me and then I stopped the final and even if I set the file on both sides a telling notify what's not file I could think that I'm monitoring I know that's different from the 1 that I notify actually cocked and that disturbs me a lot of and then it's moved and now I don't know OK so it's moved so the thing that I think I want are active and that I'm watching and so you get into situations where you have to like what's the parent directory to make sure that no moves occurred on it and then you have to watch parents are the parents directory in like this is that a mass so having some in in a certain sense the 2 things a little bit better that way because that we said the STN and gray and then I can I can put that into you and I can ask that the FT so at least I know that it's the same thing as something that's a little bit and say but without BG only having that if the open is also risk because even if I only have it open for MS some because the amount of fossil stand at that exact point it's not the way for me to close it it is going to tell them not attend and that's a problem too yeah yeah yeah file-system notification something as part of the development we could work with them but I think it