-
Notifications
You must be signed in to change notification settings - Fork 159
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
image builder: provide a hook for user-defined action(s) while preparing image content #171
Comments
Sorry, I don't understand your description of the different options. From what I understood you would like to add a new symbol to the .config (let's call it
Is this understanding correct? If so, then I don't see any difference between the two. If not could you please describe both options once again as short as possible, and if advantageous from the technical/implementation point of view. |
I'd prefer to add a new option, which has nothing in common with Instead it gets called from
The value has to contain the name of an executable file (-n & -x) and the expert level has to be selected, too, because I would limit this setting to "experts" only and I want to assure, that no "invisible" script with name from an earlier (and re-used) configuration file gets executed without being really displayed in I would leave I think, But changing this file needs much more awareness from users ... either they copy the changed file from and to the Freetz tree themselves prior/after necessary Using a new value, users may even select different scripts for their devices of the same model ... let's call them FB7490_edge and FB7490_office, where each of them needs different customizations for the Freetz image. So the user needs only to specify the correct In a next step, I'd like to make the used But the programs from Kconfig are able to handle these files by their (different) names ... and there's only another parameter needed to teach My main and seeming still far away goal is a more flexible toolchain, where more than one FRITZ!OS-based device may be served by a single build system and a single working tree - with as least interaction from users as possible. This is a precondition to get an automated build system in the future, where the user has to provide only a configuration file (and possible customization scripts) and he gets the finalized image. To make such a system not to have to start over from scratch for each single run, it's necessary to separate the concrete parameters for the requested image (which packages have to be included?) from the model and (FRITZ!OS) version dependent parameters. Then someone (I, you, we) may re-use the VR9-based toolchain and pre-compiled packages for different models, as long as they're based on the same chipset und use the same toolchain components. In this context, the new option for customizations at the image builder stage looks best for me. |
Even more confused. What are the two options your want to discuss / make the decision between? As to the remaining part. It IS possible to build multiple different images within the same source tree. I do it all the time. The only thing one have to do manually is the .config management. |
An alternative solution would be to add In addition one can add as many additional menuconfig variables as one wants to I.e. the feature you ask for is actually already possible ;-) |
Look - I've started my questioning with the assessment, that there's already an option to customize the image builder, but it's for most users (with little experiences using And this is also true for third parties, who'd like to provide "customized files" for such users. Alone the steps needed to ensure the correct files in the proper locations, are somewhat complicated for inexperienced users with the current stand. I did not write, it's "impossible" with the current stand - it's simply "inconvenient". I think (or hope), I myself know most (not all) of these options and even with this knowledge, the image builder is currently too inflexible in my opinion - it's one of the important reasons, why I'm not using it. The I don't know, how you're creating your images ... I have to maintain multiple models for multiple customers with different configurations, which share big parts, but are never really the same. Customization starts with different public keys for verification of integrity of images (used per customer) and ends with different extensions to install - for different branches (offices) or different purposes of a device for a customer. But I would never ever create a "custom.in" which includes all of the additional options, that are used in sum of all customers - the effort increases exponentially with each new option. Next time each meanwhile added option is detected as "NEW", what frustrates The It's much, much easier to create different files for the different images (the If the difference in handling is reduced to a different name of the "hook script" in the (anyway) different configuration file, there's no need to juggle with files below the Freetz tree. My suggestions aren't always for the sake of mine ... I'll usually find my own way to solve a problem. If you think, changes are not necessary anymore, then I'm unable to do anything. But that you're only able to re-use a build tree for more than one device (or class of devices with same purposes and packages), because you're maintaining the needed configuration files yourself, was written above already (even in #171 (comment) immediately below the first horizontal ruler). But it looks to me now, as if this is your final goal and the ultimate version and you're not interested in further changes, are you? Maybe I was too vague with my descriptions or their "preconditions" ... yes, you may RE-USE one single build tree for sequential(!) image builds. But what's about parallel builds on a server with up to 16 cores? The "image builder stage" (aka "fwmod") is neither reusable nor reentrant (that means: usable in parallel). Such bolides aren't fictional - they are used in automated builds all over and even if Freetz hasn't any continuous delivery or integration parts itself yet (because it needs the concrete configuration from user), it should be possible to use the toolchain or even all parts of the project from such an automated build server - maybe it could be a local one in the first step. If you accept such automated builds as a goal for the future, you have to separate the settings used in each "stage" of the toolchain ... merging it below the working tree again (no matter, whether in the If you don't want to run each build server "from scratch", you have to solve the problem, to conserve a consistent result of earlier stages. This is only possible, if as least as possible customized settings are part of this intermediate result. If you create a SquashFS image from the toolchain files and mount this file later in your build server for the "package builder stage", you don't need the files to create this toolchain (e.g. the host compiler for the cross-compile toolchain) anymore - this task (creating the toolchain for a given version from vendor) has to be done only once (and for each different toolchain again). The build system in the "image builder stage" does need neither a compiler nor a complete toolchain anymore - it has only to extract the files from the original image, modify the content of the image tree and create a new packed image. If you have to serve many different devices (same model) with the same FRITZ!OS version and are able to re-use the existing packages from a common build, you may mount the (foreign) filesystem with the precompiled packages and use more than a single instance of the image builder to create as much images as possible in parallel (still from the same Freetz tree) ... usually all of these further steps are just awaiting the finalization of the "package builder stage". But once again ... all of the suggested changes are only small steps in the right direction. They do not add any complexity to Freetz at all, nor do they change the current implementation. If you think, everything is fine (or sufficient) as it's now, I'll quit any attempts to untie the strong dependencies between the (imho independent) parts of the current project and Freetz will continue to be a system "only for the experts" (in my opinion and compared with other modern systems - from NAS user interfaces to the tools for rooting of a smartphone). But there are definitely more users, who would be able to control the build process for their own images, than there are users willing (and able) to "learn" Linux terminal commands. I just can't remember the name of the earlier build service, which was present 15 years ago already - but that's an example, what's my goal and vision for Freetz (that would be really "next generation"). If you want to keep the "status quo" only, I 'm able and ready to accept this, too. But please give me this statement explicitly - I don't want to read any later, that there were no attempts to make things better (or at least different). Yes, you're right ... there's a (imho unhandy) solution for most problems already. Experienced users should be able to use these options ... but what do you think will all the others do? I will tell it to you: They'll surrender and stop using Freetz - but is this really your vision? And now, to tie thoughts and threads together again ... the core of my question (or more precise of my poll) was, whether it's better to use a new option to implement "per configuration" hooks or whether the old That a new solution is necessary (one, that's simpler to use and - more important - to create), is unquestionable for me - even if there's already an older (and more complicated) one. If anybody has a better idea (beside the "leave it like it is now"), I would like to read and to discuss it. This new hook script doesn't need any further decisions or conditional statements ... as long as it's solely customized for the used configuration, it knows already the current settings. That's the main difference to the more general If an used script is "smarter" and may cope with more than one configuration ... no problem - but that's not obligated (while it's required for These files have simply different requirements and preconditions, what results in different complexity and the "per configuration" hook scripts are the simpler ones. |
You mix a lot of things together, please stay within the context of the initial request. Topics like .config management, reusable toolchains, parallel builds within the same source dir might be interesting but nevertheless should be discussed separately. I do not understand/follow your arguments. What's the problem with e.g. "has to be the same for all images" in
Yes, the declaration of the variables and thus the content of config/custom.in is the same, but you still assign different values in different .config's. I believe what you ask for could already be implemented using the current code state: The whole content of config/custom.in:
The following additional line in fwmod_custom:
Does it meet your needs? Is it flexible enough? |
I can not skip each context, relations/links and thoughts regarding further directions of development - if a small step with a suggested change is part of an even taller goal. While writing somethings with context I had the hope, that you could see the more complex links yourself. Please compare the needed efforts of both approaches to solve the following problem (it's from real life, as you know):
As I wrote, this problem is not academically or only theoretically - it was taken from this thread: https://www.ip-phone-forum.de/threads/rc-custom-in-image-einbinden.303212/ Compare the troubleshooting using my approach (store/change a file, add its name to As I wrote earlier ... the current approach using The new option is a "per image" solution - it's applied only, if it's explicitly selected from You may compare the differences between them with the ideas behind a "site-wide" and a "user-specific" setting from other packages. The core of my poll was and is still, whether this "user-specific part" should complement or replace the "site-wide part" - the question isn't, whether this "user-specific part" is needed. Sure, you may decide later, that you will ignore a pull request with the resulting changes ... that's why I want to collect opinions, how it's implemented best - but not whether it's necessary. |
Sorry, Peter, this might be the real case in terms of the problem, but this definitely a constructed case in terms of the solution. It might be your way to solve it but not that of an inexperienced user. The inexperienced Linux user wouldn't write a sed script to modify Besides that there is a discrepancy in your arguments. In #171 (comment) you write
and in #171 (comment) you are all of the sudden talking about the "inexperienced user". So whom is the new option targeted for? The inexperienced user would not create any somewhere else located scripts. I could even remember the inexperienced users asking the questions like how to make a script executable, what the correct shebang is, etc. The inexperienced user would definitely directly edit the file. And the experienced user would do something like I wrote in #171 (comment). Or to say it the other way
In order you're not thinking I'm blocking something for no reason. This is just my view on the topic. I can perfectly live with adding something similar to #171 (comment) (what you actually ask for is to provide these or similar options out of the box). I would however prefer the replacement alternative, i.e. the default customization script is |
Easy to discover ... look at #171 (comment), where you will read the following phrase:
Later I wanted to keep the shell code line small and simple and omitted the additional test for "LEVEL_ADVANCED" - hoped, you could imagine yourself, how it should look like. The "group" targeted by the suggested change consists of inexperienced Linux users, who have to decide, whether they may and want help locating a problem (which only occurs on their devices) with the lowest possible additional efforts. If I (or someone else) may tell them exactly the steps described by me above, they can create such a "special image" for testing purposes ... it's relatively easy and simple to understand and it's a flyspeck compared to the efforts with an additional build tree and changes to one or more file(s), which have to reverted later to get the previous version again. With your suggestion to use On the one hand you assess, that's no problem to re-use the whole build tree for more than one image and on the other hand you want to force customizations by the users from within this tree (and the Whether you call the user hook script for a special image from But using Sure, "fwmod" needs some changes, too. But if this wouldn't be such a monster of code (I know, that 'modfs' isn't anything leaner) and would use a "more modularized structure", it would be easy to replace this script with an own version, while re-using the components for the needed steps. Imagine there's a configurable value with the name of this "image builder script" ... it's easy if you try (this was sung by someone). It would be as easy as stealing the lollipop from a child, if someone could add a list of my "modscripts" to a simple file and call this one for his images via a "hook". And as long as he has And if it gets incorporated into Freetz and is not "marginalized" any longer as a "customization" (because the same result may be gotten on other ways, what's true without any doubt, too), the whole original working tree stays untouched. At least as far as possible, because using sub-directories of the "source tree" as "working directory" isn't a good idea, too - even if other projects do it in the same manner. That's a "one tree, one purpose, each time rebuilt from scratch" approach and isn't easy to mix with a reusable and possibly reentrant approach, where each stage is only executed, if it's really necessary, because something important has changed for this stage and it needs to re-run. Such a strategy, to keep original files together and as far as possible untouched and unchanged, is known in other contexts, too - if you have an overlay filesystem with "copy on write" from the underlying structure, you will avoid any unnecessary change to the upper structure - it's more or less the same with a "source tree", if you want it to be reusable for more than one build. If you compile a package with special "configure" options in-place and store the results below the source tree, the next build with different options overwrites the previous results and if the previous build has to be repeated after another one with alternate options, it has to run from scratch once again. If you ever want to be able to dissect the parts of Freetz into some smaller (and more handy) pieces, you have to try to replace more and more (currently fixed) settings by configurable values and to clearly distinct between "framework settings", which are needed for Freetz to connect things the right way, and "user settings", which control the manner, how images are built and what they contain. Currently there's only one mantra from all Freetz files: The "$BASEDIR" is always the working tree with all source files and all further actions are done below this tree. Why isn't it possible to reuse this source tree (and I mean the same files, not a juggling with links or mounts) for more than one model? If someone uses own customization nowadays and he wants to support more than one model, he (usually) has to apply these customizations to more than one source tree. Why can't he apply them to the single local copy and the path of this single copy is a configurable setting for the other parts? I'm juggling with configurations for different models and different platforms for a long time meanwhile (and with many differences to the "original Freetz") ... but it was my private problem in the past and I had to solve it myself. Now Freetz supports multiple platforms itself and more and more users are using more than a single device with Freetz. In my opinion Freetz has therefore to change some things to make its usage easier - but there will be not a "big bang", after which Freetz gets reincarnated with a completely new structure ... there are many small steps necessary to reach such a goal. This maybe a mix of different problems again ... but it has to describe and cover the whole situation and to explain, why it's not purposeful to integrate new options for customization of the final image under the original source tree of Freetz - not even such simple changes as the suggested lines from #171 (comment). And a merge conflict is raised in a jiffy:
There's no difference, whether the above was shown with an older commit ... as soon as another change to It's no problem for an experienced Git user - but it's an obstacle for most Freetz users, who do know only the "git clone" and "git pull" commands (and who haven't to know more "git" to use Freetz) - and that's not just a boring theory, too. |
Hmm ... hier gehen wohl gerade die Uhrzeiten der Kommentare etwas kreuz und quer und es scheint kein Problem der verwendeten Clients zu sein, sondern eher eines des gerade mit der Aufgabe befaßten (Cloud-)Servers. |
I'm confused a bit, the comments are not shown in the time order. Am I the only one? Or is it a GitHub bug? |
I tend to see it as a server problem. |
Meine Zitat ist aber echt aus dem Kontext gerissen ;-) Die Frage stellte ich am Ende des Abschnitts, in dem ich auf einen Widerspruch (zumindest in meinen Augen) in Deiner Argumentationskette hingewiesen habe. Einerseits sagst Du, die Option sei für die Experten, in den Beispielen redest aber auf einmal über den "inexperienced User". Ein "inexperienced User" ist für mich aber kein Experte...
Ach so ist es gedacht. Der Experte sagt dem Unerfahrenen und der unerfahrene aktiviert eine Experten-Option in seiner .config :-) Nebenbemerkung zu testing purposes. Bei testing purposes ist die Erwartung/Hoffnung, dass das Problem in naher Zukunft gelöst wird. Und daher ist es eigentlich egal, wie genau die Änderung erfolgt, die dem Testing-Zweck dient. Der wichtigere Sinn und Zweck von Build-Customization ist etwas dauerhaft / immer wieder machen zu können, was Freetz nicht macht bzw. als eine Option anbietet.
Die
Oh, Peter, fang doch bitte jetzt nicht ernsthaft an, die Beispiel-Lösung zu kritisieren (ich habe sogar "these or similar options" geschrieben). Das war doch nur ein Beispiel, dass es mit den jetzigen Mitteln geht und völlig flexibel ist bzw. nur Deiner Kreativität überlassen ist. Die Option in meiner Beispiel-custom.in hätte auch
Ich nutze privat sowohl Es ist also wirklich der Kreativität und den Vorlieben des Users überlassen. Du möchtest halt ein oder mehrere Scripte angeben können. Da meine Mods manchmal auch Parameter benötigen, bevorzuge ich die oben beschriebene Lösung. Um die Diskussion mal abzukürzen. Ich habe nichts gegen eine Option, die es ermöglicht, die Namen der aufzurufenden custom-Scripte anzugeben (ob comma- oder space-separated sei Dir überlassen). Der Default-Wert ist Haben wir damit einen gemeinsamen Nenner gefunden? Oder gibt es noch Punkte, die Dir an dem Vorschlag nicht gefallen? |
Ich habe den letzten Beitrag irgendwie nicht mitbekommen als Benachrichtigung - vermutlich durch die (Uhr-)Zeitprobleme zwischendrin. Ich kann mit dem letzten Vorschlag durchaus leben ... um noch mal den Kern meiner "Umfrage" aufzuzeigen: Ich wollte eigentlich nur wissen, ob es Meinungen gibt, wie man es am besten regelt - ob man die alte Die Lösung an sich ist ja nicht so schwer - ob man das jetzt tatsächlich mit mehr als einem Skript in dem betreffenden Parameter erlaubt oder sich auf ein einziges beschränkt, würde ich immer noch genauer überlegen. Ich sehe den Widerspruch in der "Zielgruppe" immer noch nicht ... daß es diese Gruppe gibt (die eine Art "assisted trouble-shooting" braucht), darüber besteht ja offenbar Einigkeit? Nun könnte man die von mir ins Spiel gebrachte, zusätzliche Option natürlich auch mit einem weiteren "level of experience" verknüpfen ... nur erschien (bzw. erscheint) mir das auch übertrieben. Auf der einen Seite will ich verhindern, daß irgendwelche (customized) Dateien ausgeführt werden, ohne daß dieses dem Benutzer "angezeigt" wird (deshalb die Abfrage des konfigurierten Levels beim Aufruf, weil solche Einstellungen ansonsten auch aus anderen Konfigurationen übernommen werden könnten - siehe "clearconfig") und auf der anderen Seite will ich den Änfänger (um "beginner" mal wörtlich zu nehmen), der diese Möglichkeit gar nicht benötigt, auch nicht mit zusätzlichen Einstellmöglichkeiten in "menuconfig" belasten. Für mich liefe das irgendwo unter "build system" und das kommt frühestens mit "advanced" bzw. so richtig auch erst mit "expert" zur Anzeige. Die von Dir angesprochenen "Unklarheiten" bzgl. der Zielgruppe bzw. der Umsetzung resultieren also aus diesem Zwiespalt - ich dachte (bzw. hoffte) auch durchaus, das bereits in meiner Eröffnung soweit verdeutlicht zu haben ... daher habe ich Deinen diesbezüglichen Einwand eigentlich auch nur zum Anlaß genommen, das noch einmal etwas genauer aufzudröseln. Einen echten Widerspruch (in meinen Aussagen dazu) kann ich - anders als den Widerstreit zwischen den beiden Extrema bei den Zielen (Übesichtlichkeit vs. Flexibilität), wo man eben Maß und Mitte finden muß - gar nicht so richtig sehen und ich denke mal, daß meine Ausführungen im ersten Beitrag in diesem Thread auch zeigen, daß ich mir genau über diesen Aspekt von Beginn an Gedanken machen wollte - auch dazu lese ich gerne weitere "Meinungen", wie man es am besten realisiert ... ich hoffe mal, daß die vermeintlichen Widersprüche jetzt geklärt sind. Nochmal zur Du wirst aber sicherlich nicht bestreiten, daß damit und auch durch den Kontext, in dem diese Datei aufgerufen wird (denn sie muß ja so gestaltet sein, daß sie die Patches nur "conditional" umsetzt), ihr Inhalt für einen "unerfahrenen Shell-Benutzer" deutlich unübersichtlicher ist und selbst für den (erfahrenen) Helfer ist es schwieriger, den passenden Ersatz selbst bereitzustellen bzw. "Anweisungen" zum Modifizieren der Datei zu geben - immer mit dem Argument im Hinterkopf, daß sich für die anderen Images, die mit diesem Tree erstellt werden, nichts dauerhaft ändern soll (was die Änderung der Da ist der Ansatz mit dem "straight file", das ggf. einfach per Download ersetzt werden könnte und nur Auswirkungen auf dieses eine konkrete Image hat, in dessen Konfigurationsdatei es eingetragen ist, leichter zu realisieren und zu kontrollieren - in der Aber selbst hier gibt es wohl wieder zwei gegenläufige Aspekte ... die Möglichkeit der Angabe mehrerer Skripte macht es natürlich deutlich leichter, einfach ein weiteres für einen einmaligen Test hinzuzufügen, gleichzeitig erfordert das dann beim "assisted trouble-shooting" wieder ausführliche Erklärungen, welche(s) der bisher getesteten Skripte denn nun weiter in der Konfiguration stehen bleiben sollte(n) und welche(s) nicht. Da ist dann eine einzige Datei (die ggf. ja weitere mit einer einzelnen Zeile aufrufen kann) wieder übersichtlicher (für beide Beteiligte) - so zumindest meine Meinung und schon die Angabe einer recht langen Zeile mit einer Zeichenkette für mehrere Skript-Dateien ist in Vielleicht kannst Du nachvollziehen, daß aus den oben angeführten Gründen ich tatsächlich mit Deinem Kompromissvorschlag (den ich per se begrüße, weil sich eine Einigung abzeichnet) noch nicht so ganz glücklich bin. Ich würde eben gerne eine Änderung so ausführen, daß sich für die bisherigen Abläufe so wenig wie möglich (am besten sogar nichts) ändert - den Fall des "all-no-freetz"-Users, der zusätzlich noch im Rahmen des "assisted trouble-shooting" weitere Änderungen (nach "Anweisung") vornehmen soll, ziehe ich jetzt mal nicht noch als Argument aus dem Hut, weil der sicherlich wirklich die Ausnahme wäre. Jedenfalls steht (m.E.) ja weiter die Argumentation, bei der es nicht ausgeschlossen ist, daß die Ich sehe es auch überhaupt nicht problematisch, wenn es mehrere Möglichkeiten für solche Anpassungen gibt ... schließlich haben beide Wege tatsächlich einen unterschiedlichen Kontext, ich denke mal, darüber besteht Einigkeit zwischen uns? Sicherlich käme ja auch niemand auf die Idee, das "vim"- oder das "nano"-Paket aus Freetz zu streichen, nur weil es mit dem BusyBox-"vi" schon einen Editor in Freetz gibt, mit dem man - wenn auch auf anderen Wegen und mit anderen Kommandos, ggf. auch anderem Aufwand - genau dasselbe Ergebnis erzielen könnte. Der abweichende Kontext ( Das Ergebnis wäre es dann, daß man in Letzteres gilt m.E. auch für das Verhältnis von Bei der |
Ich habe das gerade noch einmal getestet, was von
Es gibt also schon ein paar Exporte ... aber die angesprochenen Infos (OS-Version, Plattform, etc.), die ggf. einen Unterschied bei der Abarbeitung einer "gemeinsamen" |
Questions answered, decisions made ... no further needs to keep this issue opened. Whether I'll provide a pull request with changes regarding the "ventilated" themes, isn't finally cleared (anymore). Thanks for other opinions, thoughts and points of view. |
Ich hatte einfach keine Zeit gehabt zu antworten bzw. überhaupt Deine Antwort zu lesen/zu verstehen, diese ist ja mal wieder nicht gerade kurz geworden. Ich kann ehrlich gesagt Deiner Argumentation nicht folgen und betone nochmal (vielleicht hast Du diesen Punkt übersehen), dass der Ich halte die Lösung mit einer Variable, die die Liste aller aufzurufenden Scripte enthält weiterhin für die beste. Die Schnittstelle zu den Custom-Scripts darf durchaus überarbeitet werden. Das können andere/zusätzliche |
Doch ... ich hatte das mit dem "langfristigen Abschaffen" durchaus gelesen und verstanden - ich bin ja mit der Utopie, daß der Name des "Image-Builders" auch konfigurierbar sein könnte, darauf eingegangen. Das wäre dann für mich eine "natürliche Lösung" ... für "no-freetz-mode" wird einfach ein anderes Skript beim Zusammenstellen des Images benutzt (das weiterhin dieselben "Bausteine" nutzt, wie das stärker zu modularisiernde "fwmod") - das hält gleichzeitig das "fwmod"-Skript (oder wie der Image-Builder MIT Mods dann auch immer genannt werden sollte) kleiner und übersichtlicher. Durch die Benutzung von gemeinsamen Routinen ergibt sich dann auch nur sehr wenig doppelter Code und ob bzw. wo und wie ein solcher Image-Builder dann Eingriffe für Anpassungen durch den Benutzer gestattet, kann man rein durch den Inhalt dieses Skripts festlegen. Wenn man dann der Ansicht ist, daß zusätzliche Änderungen am Image ein Feature sind, das wenigstens ein "experience level" als "advanced user" verlangt, dann verwendet man eben für "beginner" einen anderen Image-Builder, der gar keine weiteren Anpassungen gestattet. Zur "Liste" der aufzurufenden Skript-Dateien in einer Variablen kann ich nur noch einmal betonen, daß "mconf" einfach nicht wirklich dafür geeignet ist, längere Zeichenketten in einer Variablen zu verwalten - ich habe schon gestandene Linux-User vor den Eingabedialogen von "ncurses" weinen sehen. Du brauchst nur selbst mal ein solches Eingabefeld (z.B. für den "user defined comment") schön mit Daten füllen, so daß die eingegebenen Daten beginnen, links herauszuscrollen - dann noch einige weitere Zeichen eingeben und nicht zu geizig sein (es dürfen auch zweimal die verfügbaren 70 Zeichen sein + ein paar weitere). Die neuen Daten "kleben" dabei dann am rechten Rand des Eingabefeldes und links scrollt halt ein Zeichen pro Tastenanschlag raus - soweit noch kein Problem. Aber jetzt gehe einfach mal hin und lösche die zuletzt eingegebenen Zeichen mit der Backspace-Taste, bis Du am linken Rand des Eingabefeldes angekommen bist - und dann noch darüber hinaus. Was passiert? Jetzt "klebt" der Cursor am linken Rand des Eingabefeldes und jeder weitere Druck auf die Backspace-Taste löscht ein weiteres Zeichen ... nur sieht man das nicht und man hat auch keinen Schimmer (wenn man schön die Finger von den Cursortasten läßt), wann man den gesamten vorhergehenden Inhalt gelöscht hat. Will man eine solche bereits vorhandene Zeichenkette dann erneut ändern (was beim zweiten Anlauf zum Editieren spätestens der Fall ist), landet der Cursor genau da, wo Du Deinen Test mit dem Löschen gerade begonnen hast ... am Ende des bisherigen Wertes. Außer den Cursortasten und Backspace funktioniert keine weitere Taste zur Navigation in diesen Eingabefeldern (z.B. Home bzw. End). Und nun überlege Dir mal bitte, vor welche Probleme solche merkwürdig reagierenden Eingabefelder den durchschnittlichen Freetz-Benutzer stellen könnten ... schon die Frage, ob der alte Wert nun komplett gelöscht wurde (immer unter der Annahme, daß ein Scrollen notwendig war und ist), braucht besondere Aufmerksamkeit bzw. das "Wissen" um die Herausforderungen beim Editieren, vor die einen die "ncurses"-Library (konkret auch im "mconf") stellen kann. Auch wenn man dann selbstverständlich nicht mehr als einen Dateinamen darin angeben müßte, eröffnet so ein Eingabefeld wieder viele neue Fehlermöglichkeiten ... und ich verstehe nicht so richtig, wofür das dann wieder unbedingt notwendig wäre. Es macht in jedem Falle die Bedienung für den durchschnittlichen Benutzer nicht wirklich einfacher. Bis es dann aber tatsächlich mal zu einer tiefgreifenden Änderung für diesen Zumal auch hier erneut für mich die Frage stünde, warum man sich für ein "entweder oder" entscheiden sollte ... selbst wenn der "mod" am Ende irgendwann mal optional werden sollte, stört die zusätzliche Möglichkeit der Anpassung durch ein weiteres Skript-File des Freetz-Benutzers ja niemanden - der Benutzer KANN es verwenden, aber er MUSS das nicht tun (anders als bisher bei "fwmod_custom", das wird aufgerufen, ob er will oder nicht - ist halt nur ein "dummy", wenn der Benutzer es nicht anpaßt). Außerdem teile ich Deine Ansicht hinsichtlich dieser Aussage vermutlich nicht zu 100%:
Wenn ich das nicht wieder vollkommen falsch verstehe, ist das ja auch nicht die Überlegung, die Einstellungen, die man am Ende tatsächlich für den Image-Builder benötigt, von den anderen zu separieren ... hier würde doch wieder gleich am Beginn des Build-Prozesses bereits festgelegt, wie das fertige Produkt aussehen soll, oder? Und nicht nur, wie es aussehen könnte, weil die Pakete A, B und C Einzug in das fertige Image halten dürften, für welche die passenden Binaries (und Hilfsdateien) erzeugt wurden - möglichst noch mit der Option, weitere Permutationen für mehr als eine FRITZ!Box zu wählen. Wenn ich gleich am Beginn die Wahl zwischen "full-featured with GUI" und "lean modifications" treffen muß/soll und bei "lean" die Pakete, welche das GUI brauchen, gar nicht mehr zur Auswahl angeboten bzw. mitgebaut werden, kann ich die parallele Nutzung desselben Build-Trees für mehr als eine Box (oder gar für mehr als ein Modell mit derselben Architektur bzw. sogar für mehr als eine Architektur, wo der Source-Tree tatsächlich nur noch einmal bei mir existiert - das wäre dann tatsächlich für mich die "hohe Schule") ja wieder vergessen. |
Es gibt langfristig kein
Ok, das war mir nicht bewusst. Dann könnte man sagen, 5 Custom-Scripte reichen aus und anstatt einer Liste 5 Variablen - jede für je ein Script anbieten. Wäre das eine Lösung?
Welches "entweder oder"? Wovon redest Du?
Und was ist bitte schön der effektive Unterschied, ob es "aufgerufen wird und nichts macht" oder "gar nicht aufgerufen wird"?
Sorry, Diesen Absatz habe ich gar nicht verstanden. Und bevor ich da Vermutungen anstelle, die Aufforderung потрудитесь излагать Ваши мысли яснее
Wieso das jetzt? Wieso vergessen? Arbeite Dich bitte in Freetz ein. Die Auswahl der Pakete zwischen zwei .config's darf sich durchaus unterscheiden, es werden nur die gewählten Pakete ins Image übernommen oder anders rum, die Auswahl eines Pakets im menuconfig ist gleichbedeutend mit "übernehme es ins Image in der eingestellten Konfiguration" und nicht bloß "baue" und dann übernehme alles gebaute ins Image. Und, wenn ein Paket die Freetz-Infrastruktur für seine GUI benötigt, dann wird es vermutlich nicht angeboten. Aber auch dafür gibt es eine Lösung: sauberer Split auf p.s. Und Peter bitte, bitte kürzer. Wenn Du nur wüsstest, wie Du Dir selber damit schädigst. Du raubst dem gegenüber jegliche Motivation es zu lesen, geschweige denn es verstehen zu wollen. p.p.s. Und ich könnte damit leben, wenn Du, statt auf diesen meinen Beitrag zu antworten, einfach mal einen Alternativvorschlag in Twitter-Form machst (ohne Argumente), einfach mal wie der Alternativvorschlag aussehen könnte. Es ist nicht ausschließen bzw. in Deiner Wahrnehmung vermutlich in den Kommentaren oben enthalten, aber in seiner vollen Form habe ich noch nicht lesen können. |
Wie oben schon mal geschrieben, war das Thema für mich eigentlich durch und erledigt. Ich kenne jetzt Deinen Standpunkt (andere haben sich nicht geäußert) und überlege mir nun, was ich daraus mache ... ob das am Ende unbedingt in den Freetz-Master einfließen muß oder ob es mir (und denjenigen, denen ich bei einer Fehlersuche damit unter die Arme greifen will) reichen muß, wenn das in meinem eigenen Fork vorhanden ist und per "git pull" genutzt werden kann (wie das auch ohne "git remote" geht, habe ich ja schon mal gezeigt), habe ich einfach noch nicht entschieden. Wenn Du dann noch einmal nachhakst und Fragen stellst, dann antworte ich halt ... wenn das dann wieder zu lang ist, bringt es ja auch nichts, wenn ich Dir das - noch länger - noch einmal genauer erklären will. Telegramm-Stil ist sicherlich eine Möglichkeit ... aber auch nur dann, wenn der Empfänger und der Absender wenigstens annähernd auf der gleichen Wellenlänge kommunizieren (was ich bei uns heftig bestreiten würde). Ansonsten ist das wie in der Werbung bei der Geschichte der Menstruation ... eine Geschichte voller Mißverständnisse, wie es mal früher in einem Spot hieß: https://www.youtube.com/watch?v=vwMI6uO8j1k - wenn wir schon bei YouTube-Links sind. Möglich, daß nur selten Nachfragen (von anderen zumindest) zu längeren Texten von mir kommen, weil die kein Schwein liest ... denkbar aber auch, daß ein "etwas weiter ausholen" und Fragen schon von vorneherein dadurch vermeiden, daß der Leser sich nicht nur auf Vermutungen stützen muß, sondern lesen kann, was der Autor meint (selbst wenn der Text dadurch länger ist), solche (Nach-)Fragen einfach überflüssig macht - zumindest in Teilen. Aber laß uns das hier beenden ... unser "Kommunikationsverhalten" ist es sicherlich nicht wert, ausführlich in einer Issue diskutiert zu werden. |
Even if there's already a hook for own actions during image build process (in
fwmod_custom
), it's somewhat unhandy yet.This file is currently under source control and local changes to its content lead to a merge conflict (or may at least lead to one), if both files (local and remote) were changed.
The idea is now, to provide the name of such a hook script in the
.config
file instead.This prevents conflicts from source control and such files may even be stored in the build system outside of the cloned Freetz tree, if absolute path names or relative ones, pointing outside of the original tree, are accepted here.
I'd like to provide a suggestion for a patch myself (and I will) - but I'd want to poll opinions first, whether this additional hook should replace the existing one from
fwmod_custom
or whether it should expand it.Due to the fact, that calling a script outside the own tree is a risk, I personally tend to add a new variable to the configuration template, that defaults to an empty value and which is visible and/or changeable (and finally usable) only for experts or at least advanced users - that means, I would leave the current
fwmod_custom
calls untouched.So this one becomes a completely new option and the changes will have no potential, to mislead any users familiar with the current implementation.
But it means, too, that there would be a duplicate mechanism to hook the customizations into the image build pipeline - that's unquestionably a 'contra' and another approach could be, to set the
fwmod_custom
name as the default value for this hook script.My "per configuration" approach has (in my opinion) the additional advantage, that different devices with different
.config
files may use different hook scripts, too. Therefore thefwmod_custom
script could be seen more as a "per version" hook (aka "per tree") and this makes - once more - the parallel existence of both hooks looking more convenient/logical for me.Anyone out there with an opinion or even better ideas?
The text was updated successfully, but these errors were encountered: